diff --git a/.abacus.donotdelete b/.abacus.donotdelete index 8369c20..38b6e6d 100644 --- a/.abacus.donotdelete +++ b/.abacus.donotdelete @@ -1 +1 @@ -gAAAAABpdkLcuZ-miUqWjdB0Cd3dpyc1YEmQ8RIAGa-n_3eNbVkstw2BD1X53OMGz8gtf0FxtiCFoIcHfOQ5nT8jAV_c78JdPQ7TgTrfC2RhHeFhq5KBcmeY1CDhHwM8Y8Hn-VVzQyxAFfD89ch5n8zPcsMIVdmBH5y-r5LYVF7MvHrYVV6PfcBD0NNhn6rNJRHQThtYrhFm3Ln94HF7fvlhWwNogMHQ_6-BE7cqgjGQGMf2hzJIBl2Ljuw2ViSDHmIXixr4bMD4CRvbEr2oSAlsaDcIFNdw2sy5Jena9YW_t7qe4Qhy2J84fIF9oewlTuW-jYw3xiVvYUxKRfQNhYUU0mHqP0t14g6gPgow7gZjIBOD9ZhvZsf_Swc4XqUdRfRESziHnWh9na_mlBFeMmpFzUy9bzNkz-H_v9RmkGusKBqNPDtJkupRdX95ZEjSnh7zmmoNECCz6f2NVBq3Z47fvPA4C1QbImQuHbZkFFkrRUXr6XGRaEh0e-K23itcC1AtOd1V0MmDEecTfkw0HeYtQ3x-cWQmkaZp62l2A9l338P48lhCSSDloh_xOT851SDpkf3CBionDgKO7YSiMykTASUYJs9-s8KR2bJx_bq-Mkofa-nCqdVdivG3gocd0jShpu1Pkt7AplciUFAKIResUHzGBhpk6FhxVfzAy9mIQWBsiXrKI1sDBdKXxbE7FOLwVl2p9XIZFscL9R_v4QJVK4ANih_ysgTUIQDnM561asQcLMCRL5_k5rhfzVdB5uDibKqlM5TjMo0oI7Wj5N6qbpW3GdOKhItgYz_uOvg-2D3ix_IIYmQ62pfl5RcTEyZvKxdsbfvK5XZW5oFvgmjjoYazPYPjq2N2meEOXmU63ftGgv79g1IgjqxWXotBgeAZ9rh78J3JYvH_-9G2fBxWcHbzHfQZ4YTUrKdra4SV4RR9HBs3pPBQKHSWre9GcZz3bp7MtOg_gOeE91tftTKXcanILJmUNFyX18M3c3rZK6nWBhcdn7IRExi2wOmaVNBUSFCD_cd_PNOziO1IVsHrZPrPPRA2Jyp-LAeAjRYoa3FVibqhMWdQ9Yu-C0Q_Re5JFiMfavfZShhbAFkDsffXkUVfBxJILLS-wFt3SLyhatxfbOih-01-Q38d5XFREOTQg0ZLLEO-liGKrAs_bK6N9LvTGpAId7AI7vN9GCTq3F6GtWXfHDx9a3zPRPXdkh22oBFAwakamgr5EbCB6mGKypGiENpbfGF10KKqNKE7iDslJ7Ucacc_fSwceWub2DHPQPOU5f6YGPaPgD0sFLCQKsR7QYZRfbBLZyAirnMWfcNDAQHB8HPSB-P5EVGi7djhrvJaIGSN_JK05t4_ZhOg4NA7zXkfWtGLtu6VQrEj_Vza9UbEEO50MN3JdPB5IbJOjBVqpgdYfCuvY_NxPWkCAeQXZyVrGCqJ4TrCwW6PpSZRcrnfxyvw2GkNwR2zpq9DbXR4lXXsTL0CUzi_iE9-zX8VnRBbKNpnt_WOTjMmOig_wvTPnk43LQiWnUGGX8bJl87L4lTR6LsXLtwE-YD51aDydfpE-jbe3xNj9ZO4B0x31-GDt8WJsD-ZBhXN0QWnf2QA2pm1i6nDQkSU51FOD0NexU2vMKpmkQO1ClhjqrcBBaKbtI9V-o3bTRokqYbnGvH_LnegFJ-Yp94hfd-T-X6U2Hv1qL8AzKauHs0Sr7niFVR_-mgkZLoeT93OtXB7t61QE4v_1POBFJweMq_Nc1-4HSX7lVHqvEznpkgkg09_giV1EC8AN8w0MxiDOLVmEMRdg1Y1ybJJ3SV93g05lxSpbMAa7TW5pp6Kne8fCu9lwDFBp3kVoxouqaUOdAvp6lawkKvDvEvee1b9nbHsApvO4WzPcMAdnUMHyBSfpHRpQrXybKY8nb8yzB6QUyvtkYtgZtaJu6Vh-V2RkCsqIxBBTjUO-JE07Ix7R4M7az0q60zjKKMehijvqNsKkXlOX3IDQjk6QC6AwhwOJeaej4YlooxZFPl3pQxxhleY7-ivruJbT-mjav-vz7nunYfeRbjz7tWajvWOL-3svt2g7HSIuIhiiG9MKgJTeEKThGfXznYdvtN3fLQ_ef7B2lIxaB8ZJIqQuFNh5QY0g4rIL30B2FMbOqB7lIJeFtc-Y2enyu4oJxWm5I1bkolzPdoDGK0QWcrHyv8oS7RUhirTOESsH2bca4ynFd9I9DZfKwfCb8gl66uXDv_dmSBYVz9pQeteDrjUECO7aV2VSoqqj7zIA-1E2XTwQjwqhdXIU9ne3h3WZzhArJJstRNp6B2raJX_AGzEe2E2PC-GdT1fAMo2FB894dp2KDlJ3wr50ESzZunnSUNPIeRQez92SM9A6JufDs_JrPgrK7F3PlsYGCkZ7PsP3GFn3Dv7VE9JDRfQU3tBFBqfKGFEx6-rIeyw9CQROBNnmNYSbNJHM8Pb0Ci1dn10fy_Ais6N5O9B-9Ly0hdvADkUD1U7EpEHrWmGgtfn8V8keWRv-q8m72NnVbmvw90z5TeHc-tULIPJbLHBRbnumAOdK7XiMtYqyOauI5ZVq8QokfsfD0g_tuZOsxY4HYSIDPdpak-dJzCXbS5kY1NMYR9M9bGg7v60r7gGaJUl_vZn71p80NeKiU_08H_V589N1PLVyzT3UAb2wvPLvayz4eUEmsjqduPEGdVV1-fG6bHC9plJHpA5c9ppNrXJWav_HpramfcCekj9IXXMIitP-4Q4OBQdY8Vq7uQM9QK4mRv7hw6qCfEEaOoFDYkW7wB75y16s9KLzFQWvmRUnDrNy1uPz_r1ojWvwwq-iK6ik-YLLEhzpIrS5w2eR2OFuQ14qKdeafkt7QyYBo7W8PK7PaDt7mtU8-r6HSdAQkS1pL7LO39z5WO6PNLVTIButdLPp3DmL1j4TMV8_yZOKlft3aYrvJxrQw9IqQ0_LxY2fEASdtltR-0fKr2QRSwOPHA0PXJPaJSYIVzFiVEXOeio3FbDnq4iP2CeyIqNJlC4iik_O4Yy4ZXaemOfuiW8lG6IrSBS1iy6xLVNXc65bZAR6Yq4PbWC1iMXK3FgWL0F9ft2ajE7Ncs46XOIE_55yJPusJQi7dujB7l0KxYqYAd44QrenIFFdAUFCbp_yd8dMfaBF15fCvIBA0i78aZa1IZzPZXHlEto1g-lBwoKmBHzB7nSaAVErnz1YKW8EEMOjb_KnOOKEwFVHH8vMCxm4IazIfehwO8ZuPSluQ9a-NLVzp1yqDh8f33EaWWiGmysAcnGm3Kaj3GebcyjHaGU6slg40ZJxgoGNGV7vP7N49EYtaXMpmuVlP7fMOMNVRFUD0v7strBeVmp9n8Y5V_i91pYJj_n1zo9WUBliPkDbLmMwg5TFrPY6z6obFbvoS7XOZ5996P9G7-doCdQcP9xjOpV2oJIdMUgu_GljC_orQZZXuT9Y6egxtq1w7NytaRbDbcrPy-_zIpKcEF6NN5iVbBukar5O6a2k5YhsHV0hq-SMYDpyR4t_jl3zdkJ8UHvCxRypOrTxhxzhmTRDe7MShyJNe6W0yFCGepJp_ljnBN7zdFLS5KjRfTqcU8tTOs3WDPp21ZKG3aTDgKLcj6TDMsUBagY4btp5gXATT6SM2jI1V3x1mspe9W4pC3hY4lqtN7hpn8Fz3v_nk-kQamI3FJNnW8c5BBbctFXK5mnxMq07Npws_QBzG5mgjwub4w0aXy96yCbx8o2-4t1amiGSKtKL7sTRUDK0dOlXMjB7wHcP27HSItg8RRs_Y8_DEUCt_v4ss3N4lbtz4QjWPhMsi4dhMn8CRtbtzCsFrSfZ3PEoMIpPVfBuCNBIgd75aimV1CpLTy9Oi3cFaUgE30vuX_ItVncIUI0ORRbgoxlRAW553LF3QOMRPebnfkV_HyMRnGFwuWyVW13CTm_PbrvwuMQUJqyyjcl1I651ClblJm1vxq9duUtAMHTyfKZApyjOEUWF-rGMdbYERXHbILg21c8q05WYwFR1OV79VBw4nZNAVXP5-55IvcA1agAwHhFs0fvRPdMYaKO6iMoYXAb5YcYFlzZMCcIq3dRf8pOwiyWo11D-iUHh6RxZPAPlmVI4osqO3-1Q5LDGPV1mT0Gi4VLpjHvKO6Jpn3SZMEq9mw6OJcpXDOPLpV3WvI4RshV6OQWRYrevU8GTRs6tH-k7Dm1J_cWVboeBb5FU_r1ueF9hYXUgzs30riHc-JePWELqJs19eI5gZ4_NMabkVHErjb4Q8nHFn5uwkVb4GoKrptDdkxdJXrZ_d1iW_DIilKvd0_Ye47HD9GaOkO9ib2jlySfIIpnckpHeH-2D2lRRxX7j1fxIBQBbcTLq8UjITdojMP-WTPZGieZU2bbdgP0ZbFk59v7Fkbxl2mOAKTCDIAZDH4pRtkHQ6EaxwzyvtLVxvGYXXYVPVupfwYO5KLj74YHKrysjlQHbamfyAEq7hGovGgvFeBHMdynOw62TMMC0ot0xJOsio7nmDOvzWRKmI9xBuzgMaeTFnw5RaTRPMoQ66BnPfjP74qWp4yLYdEgU7EnVDlISlRAiHPc2oJ8IRC84Ez9dg38R_hE2gWPgWVQhmdSc18WIZkK7Un87TNgRFB1h6EB3tnMxXtZJ9pZ-heQCPz1fWZVjaUXkMeepCr6VqPFM9zIkyGgvvG11tthOUtiTjhxH7JMh7idsisdSSexlz4vHg7mz0t-wV4q3PRUXcZcij08SNAcwfC-lbnZ5S9jLpowUVy43dkRE32ML6ca8sV8mwNWeLE01VV0mRnt6ooIOcQXDlaDWFwCWKKmRyqYdQ0xyHdFHyLVHlnp9ElFxFkEYf5x8ysuY1_HWUZJ7oBfmX6MNNgGiJhY3VOZMhDsWEvAlF9aFeVvizKr2OldDvByS9XsoI3v0-vsrhGsuetTBf9cZt4zTeimZpnko34bPpAMN9BWg7OU3RXvk-XX4yY5jsieXbK1Q5CvA8ld92BI4DfzJv_ho3jPpN-Kpyu_wIoQz_C1E2T4fdoMHuqIwWh0Kr6j3Q-Y0loofvT0zCmn19FZ6c-o3qiKM_T72LUAMFjRy8TqPIjwCLlqd9IPTGdSkCm-f9qmNB5i3FY7kejd4I-r410N9G4_ZlLNhaElTYETFbtq0EOjVI1ORHOkS9gN2KGx6AU_PvQ4_EVFLnaRMMV-uF2ZCIkUfQsw9hDFE0Y14d4kFFo7uT9k4CaN-ic6k9emn9ga0p_qaPslu7C1B2jR4qI6hi6Xi7QiwoYatKDSq9lJyS3qzmaQllV1NIKOEVHVYNwBMlcGE9sdDz8RAr82wOcqkXCF58D740Ij74NYz2Z05Lwi4tAXpLK4IhEX8Ach9SXJdq3IEmIGFTjMMFWfVKiIB0Ode2014Prk2XmGYAKk58wO9DmIVwfCYZHz8Uno1uCFBIPbt2cK0zaE5rdxaE6FGaIcaqe2zP5VqDfO-9bu-X3x5pS2VTSU4DtaX2i4aBgdNwPxySeXecqRW_fh1aFaBzbhh-pMYcF3X-ZdjRqxCg93cC1BXnDWl5MaJDI4Kf6j5CHs2mYPLoLXrJzfg3u0ZgkbgpMSSZIhbwsINFEEUtiLtCdqpfADOv8iTtFpkNZymO9FhJBjq_BUryqx9PU6cYeTfFDI218XImJcdaPuTg2pqwHeaOL4SreyElVTfLUqUUNyDO22QSiWNkin3qLZM3wnTfiVIig-gWXd9W55FDObWv6kw0voSlncpFmKQ4NIQQLfCFXZuSrFL34x0D6pcisRvd1JKic0hGwwCgt_nJLqGABLgq1F6HChD5Mm-m5DEUYPVV4nwoFh411OzIcHdILcTTzdY8xmSViqZ2gYImsMN3ZwMDY4W0sZWo3EQSGmDIV2t6QK_IH90ovLQR6SkGL3YZ_yPU9F1mnAAhNqZ4dqfx1I9x5SFlbw4ZtrCufmuf2poeyGHz9EiHfXJzbe62kcLrB8uZs-6GQS3VIk_CfLMjbzbiDVumRgQafGX_hJkpD0o1S9DLern4FuT4K7GzRCG9UQ06APmWJy6SXXqpdBOLr632j9KE5AttwKm2Xuf1I8ebjnQvm9EwfOeGE5YVTcI5VxTpFAw9LaY2rBMxORjGkqct-9kjVSRpoKGXC4N-dhBPcxko599svijefu_Zri2fiMeTPSe-Ol6aKYPnVcI86shuD4M_F0nS2KL-t8pQEUJxXggmBkQYRJW0GvZYXO1Z40VrFQYi8k6pxySbx9gbBlpE2Mx3Zq7j0M4pXmB93Fyh0Rk1zuMdKp93ic5pZ2JKT_cPtuEUP2uMz4jC_nVA9rU2ZzvuDSRlCJl0OGUKbItqm43H3P4S81jCd_hFfSUc7f4FrIp9KJcwIbryUM66764innMpT1xHRVEAWDpvt4uDni5rNzsVf_7Wlu3eGsd_ZcMbpNOI1dSD-O7dIXb64KYNSPbTPLfYA9IGVWw8-IfyqZaVaC7hcEq2_ww2OiZIT8E_HIehC2ErKk3YFOvxek0D4IR7Y2OWmzML5Ju_inMs63LvSsQzlp3HjZ9cmNufxToguyOobn8kQEP1EQ3sxYVNmLRAxyfpstRFyMs2_SXquIdz0eo0MmLEZ4U0qqPlkM3D6aSHAv1kdzfJvF-ILhO-D-PV4HPt7fAJCtJhORX2bTREK1o4liT0Z_Lx9--WmzlcRbLuQ6aF94BztdqQLYLgtzh9URoKtligISbQuj4tGEaqCKJoJS2LKstNJxrGAHzprbfdLssdRBtC5x16T-1kaJwJVPLEjFiq0vZusBDa0a9_DS1zKbJoktpUuve1ncryuWZP08Ml0BDOWt0sAP6Nqiy5EGP_G9mC79mrc3FKzfqdb-RJ_I_qap9SjuW2O9iBLoo735eCM8_7GinEEq4Q1YWgS_cPQG-ckioL8BZGIvHnAEIhMDTmDB9GCBfQmegqym0AIokKPhFv_0xSB_cKYpxiGlUtAg1YfTtisB7N4MEBEMVebHRryoeTuA71hKaDbFBvz-28c0XdueWm2XhU9yHM_kNpBFV961bhGcLAB-pkmV2DnMPQ6-tmVrr1-9KJpxYTrkBH3MsC6Rp4W2oUhh_2J_KYGGLZIDTbV4C7TM0nroksIJZC0xoO5clnwDy0A_QsHGRsi2yfv_QT03DdQg4ZxbYZA4zyHxMP8v0lpYVeuoCPlnvb2cKB5iVMZghpXh8BMkjx6uFQGH7zyn7h0so2ZxnP7NLM5Y4fQ_nxC1cbuJk9aRB2A0ABFF7t9CJ8Gw6Tu4Iu99vZ1JCq6vdv5VrYpHA7rwFOQDQ606QPHFJpaaVTy6ROVscVdo7KnRTraJadR4x21KyHlWtDKZ1GGoCX7CxPyT4Zy56_-qvJTBro4zffafVe5DTxL4IypErNp7Q0Acnh6HyFzDui-3KhmF-rUclkqPHA4-0B7CXnbIO91dYmQVsJJPUCDz8PFP7so1J564vrDp5tq6YM8pCmfa7IhIU9rOr0bRGxTiB9VGHYzDJ3WV15FEgV0V2pX16pYr9MLRGBioJ1CdzC5YCFOZRlLyBNbvNxs5ve6b9kEJpwcBtfMYfF2iW56qOOpJ3NcPI9StPrRmXTPVYl6AnnLnysLcw5qch-v5-XEtZxn9ZEm1SuCwvOdvlLrBnJGT27MGcSrY488V4mFabNLV3uJRMz_MwD9yu3u2Ptgx2hWy-MUjeIeiNhIZ0USmbIiHfCTV1zDbc0__6EVbKZtZlbZUO4z2w9ZUeO1yemViq1cxLDTKFYcbVOeixHg-slGBZvFiXybA1yxVkGI7ioTbVZb6JAPGGSsn3Kr5319166kNK0j-XVxpbpdXKY2-VcCFcqVXgUrzMMN_uj5XUqwQ4rdLFE5xpz_Y-zFNE4bPumyiCep059BHDeU6D3rm1v4Uwzip3djB2wiRN_jLc4z_DXBQP2ZWxc_6Y7QgWw9ZiNDevLn6utn-69CZnltxR70SLgZew2Pok9MC8mLtMqdOSSU9LOtrqBV1a-CmI5aYqOB3iKBrDCYoFBMyjmueCntzGO0BrOIeBOM0sUtqsc4gkkeFlAO8GgiHdAFVr5Pk4CdClhAWUA7jFIvn7_eMlxHHlZfkMPOXW4pWEmiqDMX5DSMbifN9KoXkxOa2gGB8sNfeVurOy8b9JLBSaYUXUz-5VJMxQ7_YZqFsY8ADEVZor-pnb0xmeoNl7ZsesfVAJ33igXFep28g9pd410AgptePtTGrIFFa52HHkANEX-PFFKW1ZFvZW9bhtcTb4sDiAoEjUH3Ev2MOYdBF1WxrdTywwnL4MaCDK7eSJFXxDcQVaAUJxStey9guiR8atJHRopi_we6--Mpq2AuHdaEq0knQ6i5iOHCyYakNLHUqZX5suFXZmoOqTL4ULNHf4xxNGFeALAluwUEWJPcKLWbfClbI_1qXEE2CZ2u4Cn3WZ3loW03_idvi2waQjYa2mAji_lcwStzeoJAs-xUwMyWdmyuApbKFykHSmQCeA47aQYVG7Oc0I4PA1EJLgtw8C8PdDBBQC2RlhxwLe50YTdNu1UeB1USLHYNrL0XnCG93wUbabdO7bnQC0-nAOgEwUjlnLseBWWVcqh6FyhFpcZiqcD7iylZnNB8rKE8eoDB6vtUWEo3GB2blgto9xDKiuwsZ1Wa_5O_WP2sttEhYdDvfh9m3FC2pwlxJK8gpeADWJ5sJc8B-QAYVtCiM-8DaM3GeONu6b5gqnn_yINq63bxHfc1P638NDz27TACZ0oporSxIi481k_XEMiO1v0h2agHIOSAXGqnR-w0_ZgmzOBZ6csaX2B3dDFOOonGaKDpH1l9HtcK6Bur_gVB0XxVmVf671WQXyGUzAwJNGrSEyHaRPxka4N36OqLSff8M063e9KC_-sQnM3Z9zIlVuhX09pejC1FvCUwHNE2VK6kLZWzx4A1Hovr3P8WAta6SDZQvgnGYmvtls9gKJgRLqfrsj07I2HSPfSN0ZKq5M05RaMwDTdMj5uC0ZjEX161wiG9PNSLfnpt9il8zI9m9KTuK369plzgtJ0s01m9J-L3766usr_qjWLuKuuRZCOzSv47yJnL2dKruU3_0I0dibICXaVL5qQamidRbq_f-wspuB6C5oGM3H-iz0pzQP9dNAvGKKfhsiIrPDdNmwcx0DyUlFfOIgVicJ1HM_4PPZJAW9_v1J3av2h0s0fLowKWSqJ5UAwgbyHPqYBxxmYmzSmRGrmvzRKswL6GFtQxE-SxY3R5t8DlD5X30nVMRpnOQbs-0AKuL1m_-Lq5XfiON0zUpGKQD5etU_LA8PMS3Qesfrdlo2VtmIAw65srdiZcMOl_u3k-GEdeFyyqO-FRl-b7IsvgeNMFRITkfHZ4gm0Hyb8wGHB9BYy0iWPup6I5QAMp-SNv_wcwUz2R-QGTYsOCpcjxxwkf3GH0nmSMMJKlX3dDqabywyni4wj20mK9QOQqZ33FBgA4Xb2LwH90je_A15KOEmbMrP-ChnazyQX_tV2dF3_lkabmyG7UQJCA1qO2_QszIf4kI4FbfEKXkBkH9uvLeVscfsKEq7YRBkU0moNT3gt9TbHjOfmSW0EYOEBjXGyTAxb19RFT5R0rTQpG1XynzLOdh5FrQWBCaoTRRAJhRaTwm915RG5xxbn9e4_PYKwdwSxGFzvjIkW9URpl2Ru8qiu62Gw0mgfsqFh7SaJlve6m6zXswfD0QStkVSM-G82duLxRsjub-RLaHGgIAjYfC5LZOCIeNsXBYJOOdi7EhPJ4X4p3yg5FK7Qz68N5Crs5bNVm9akINfHymWVQBuWbv_zBk0THdIwxAucxsOf0LeeBfEJCRG0hoBUGzJVsU4A_6rMn6TChS5n8efdrgUV1zNM1_-ofZOao0VzGY9PwCX7Wwg3UTzJKAeHtvpulXYXZs8o-6X3wUhnX602ACQaYAGFJI2TejTKU0NINQSNjj2DV8pxGz0rVoYDyxdlG3TIfPXax3wQ0x6b67gKRb-i_uz-5wTqYCRTq1LLHZaX3pbsmNR81DkWKxdNylvDS9pIuAWrut7ENj_OvFGhIo7yGYbujE1OJki3CSpqP2wMCa0lJuAIlt7SREHDGKm8T8dt0y6zGd1V87pmlVNkmdV9slnAz4Lg24IP_uWyobSDhAtwkDzoSFZxguAj2rkMK66lTD167pYL-dxHsjlfWss4DB_JXdVh8dDfxwtwjkv4dxCqWyoRTq_LqnAERW4GGX2xPWwvQDbw8PTKQNkUG-8RydKAbk0P3O63gzkuhRlAm9AkJLb1nlKGPxw6uz_tBwPlr-ZvoRBD3uosg-rejj0LWUmIy_6OPvELmOhSok-vMBWNYm5EEQOqWDpPIPxKB3FpQKj5HMlDzOvZ54pSh_ojn6YPXdFZHi8kvuj38Tg7yUm9mK2F183gss368r9os-AYORqaWaOVaiLiKaTF_Epld8RW-nik36TweTaf0vMft3rirGk2ZMsgL6B_wWXIoq6zYxzqSEzKlKYolaFRXJUKr4QYmZUrZWIuZkdiMycvumWuPwkRUMJuI0kuFWqZMEYYKKT2cvHTVih90_XuV9lnQHRz6wDsrks6aFPVWtt1sV1rMBarifY4RBsOgFX-yD_sg03okhCeU8_bCG9VgLvWz8G86r1WWVfgh5yxqMh8S-TrE8p74wxUQI3XJol0ELQSB-UaJ2vlfoat6yMGk69EllN0gs22Yjm69xffyJwJTn2S8ifh871mNzYqVEDH_rpfD_7zZF-JZnTnJZwyyMkL70EZjeb55P6Rf5XCVlOiR_hYy6jqM11ksYUoc13oZf95NGy7382khIOisKzGpQISfcB3Wpi4mmQGoMy_Dyo5r1b14lT86MLTVT5RlThTvLEMpiVwv2PnCqcwmkVkq-RVlBG3v5T4Q4Ykl5DuN_Jj8ERiRWtaHdJOqBHIzaUp1PluJW5RFsdK47kI_ehe5XFMV-8LNzQAQRFyTKQI-QaJfCafzSKJzzjTFgsrvRSZ16WpP0srm0xyJ8xLFuF2MAEBq7UMWRdjcrj7lqxuqRWz70p3aZ7ZWCxRgPBU-nXS1FsfDffkUY58cTm6wbchEgYCVqs_yh8NOvu56_ncVc_3V3PAHRr9tlZmM0guR2Bp9jrVScZP9in_GZBDXbyUZkXl2q12LDdWUF7oDUi9R2URfHFeX48hTbwUE87cA7uAvn-y3o7GmQ4xdjnoa6UDRGpShHCFbBGHaFk7rWnqfZvhQZGJI7NXlMfcZsqziPYg0LTgUEu40GSvFsVFs5-I7vfDiiOVwIGbfB6kI3DUsVBXetHT2JkdrIB1-8N4gJ8NdgU7CZ7Rq37-YVC_zcE_rcmqWvuc36yvmCG-JzA_CeGzhvoP21f1NllqbNcgf4qsrR8MpXDOJX9UIWcxj58Y-xmaww-jwwYeCJDf28Opg06FrIUijHy9qY_c2jQkGriEOehltyJZjljdKf3yX3i_0IDtCEKuakzMo-dJGuqZ5J0gcsxX9sdNdas3wRfZrUwBCP_jS5eh2rVjPwSZbZQ94Iej-3c6TK-yzX2Dt1DTY5W6aXIKTh7P7g2b6JASEMe5au-uWiMaYrK1Sd2dLVyqpG6STTvOerWI-VeboLNIhWSQ6zP2ysu1k6AtMgxnaUIl2Ld6ZIlZPdkKASAPu8RETsXfKIxGkeVYIXFgbR-muCh5oehRvCRf_YXbv1yoFp5zCqhxs_QpOlu-sB_GJK7OwxDV44_QY0lNvYqNb81YbKN1SjZ8gn-5NoZGov8uU8NlO9B46Vh03oSRrjXEaSh5Rg2euNCRoboaGKfPh_ayC3KHQoateEc25g9iIDHTkZPNx6pxdz8qgoSKQMgHAdvDMaNFGeSTiCc4shr9aw_6vVyTLoXo-5k_mxrFJ33PN6y2LeNKc1USjaI1TFb3mgnquCfDVxrMhHH6W24IWmXIXZX9TQddfjYS4ttZ3Kck0DsucyOVHMNmckU64YGiS8cT_RxomVJvXv0DGFaqFtbCa8iXigAXCA6XAeeMakvyzboCSu5SAlhuTIeu3MXjhG1-UjPKfC7D4owTACXVBhDXqrGgIuZwZqjn43OI6gZYp0JNaCfikZCrw2pz1pTI8Ud5FRNMDvcd_QaHjGr_g0DEgNjYrBmnlJ47QsEdSHk5_8SKx6HqoDJIEBXsyJ0b7YdGfqrfuY_j7mA4uO7oEPvi6WXAUUIYFvzWXY8HmKUTt7cnVG5KeczDcP5yJXwcNgRHxAcSa85-0sxgy1HhwtsJryR70HeQGoU3ecdG3f63qVZpmupgEHtwJ_2Vu6P6sgHR2N_4kOtYZWcUImBo6snuLBizdoz-r94nPY53JXU5zxaUXvmqso_wyEIwRQ0X4iPC9WIj-LUxfPpZtStS1Ogpwool2vYK-F669nbw0-s6YJErCrOV9UGzpulaeDiUK6BC1TYgMF2KCnHN2dRl6HK7xMg6K-EX5QZqkUYnnpEPte-tfpka8xtoRsjMvyTkWzozJ1LGxhNeArmXqTY5hCiBRu9e6wMlgz9RYenmCrPxaOKBvDxIkGeavjKYqMRpk4hljoFbFb-DEfYUnhjWzPNRe1ZbvAgHby2eokZEeX9IwyKxTIhjJFQe_ufaN5-irunhE7QAAqMQ6cuQSP_QAj9CdYUXIz7cqiURAjQXkllpTNFG7V7WNXrNlO3vf6deQCJDkiCnJ70O6RNo36h8MlqUj0AFmc7nirC_CWEPP-PPbph5FzSD94ejGHljvRUSjRXtggu9BMv17fq2jDPsCF-xDnb0_e92cd-QnFB9O-IYEIRsFMDS58DnBf4pmQv-1l6WBv_f2rVOaD5nvE-k8vTsTfAP6dci53nJLkOYZCyCxGzixfwASTlorDdBoBqE_bUH4ECDEoZKKhsEJfc_7NXr_b8FQim4oyOCXQfGlfdeFqKoL83SAdraDWh468nlfPF6rDYX25l6z61hPAYx9l4r-6sm0RiwGKd7MjtttdbuTpf06OoWZR5B9LgOFLDb3pwed_jJDtf7XWWo5cslYs3Q1M2rkCpgMrudaBcH1aIpCWUnDLbkAmKwnpvj6bpfRYGxOqATtFf1xpcoPS_4JB19bLjdjbXMnDcoe1wgrQZ0bWxzBy6bviRMyFp6C701hJ0NRHAcGiIGlSk5z5uBxOXjQen-OUM-nDlpplFO_bv6WWep8sCHW_VPSzEbRNlSAYuRI3oTBMmzIF7m-QI6eO_r4NaAH-L5KJth4lK9dfOluKZGFI1tFuXK0ZAUmXUz3oT75wtt-_0KQxJhkQkGdoQgO3otlFLPVW_p1aMWFzn9Iif1-Bt1WCbIfv44eujh2AN0JUnrsJSdE-3Kpg54SKwKYghmT4nAOewvetpPfe7BuVAEsKJ85zVoctzNqg7Ap-AUQF5h3yskwyCq39eAVhNkQ2mcfRsEjBbtlethMW99OYlVwsOxah7lQJSJIBxBxJcwCTtC3ivENfsGG8pmZGqma9Wv7bogGQVpZyRbW9ilAljPBBrCIU6glbhUNxfJmjGNM1X6gbVpC7I7n8kgYp7Lqih3UCqnTQMVaRtI9jxM5fLtN3ARRvRLL-hPisniopKwumy0pRGIB0_lupkCTLit-83p7KJxggpjE55lVab-KghlaOb_sKbKdaGqEI3oWpMmo-8CmOoXpo6Ob402iZsp6Bx49eJ56YpPjHhHtWieiwj3bBL44q5g7gW14HMx7IYZRHUEUvIc_7gPI6OrjkEiAVdhdM8S5tyINnGhzgKa8_YIdMbEYaU2I8ape7s_RchcPF1_umcHy_ifWWr9EflI7yS8bwCj75pcYKL5NIb7cnxz3pNAWH8IUoayCkyDowQIxF0Qs26QB82LdJIiRLEBO8Z4YV7bevWMJg4vzjBAxaA-_hHqoT64du3l9AIaipsYAUAK8UIY6CRTD8gm46-tSPhUZJaBdDRricf3qSj28W-435y-zad8mqjO4EM2cgCFoyLwVpHqErUTKunInfpjZXCQ62nU0-boT2teOJVYckBvVajInAFdUnknUCrX9HhjPrLuW9vH1aRy4OeihYDkgOFziKw8J5v9QpvtxMfG6cGfr__SdILuhY-TIaE4eIRIYNHPkeroU34Xir8xqFIIR1EaG3p-Foi_vnuH9g51M8difQTyqFUdYd4qVS1NkhF50yswSzFhYSOpUkiSxDYx9f1s4DBacaLJn-nRCalFKxxnVMwI0L8lkhU3nzGiphUHG07eNsSd94Z6d85kX37HmDsSBmb4liIDXa6NOvnrUCVRL3F_OFgqPt1O-lfSgJD1yCeemyLChNKe8g4--rr9AHEy5cjUnZ-Yd774z8eok1xnFeJiIsYRwMkJgqUhid9RUBSFGqqANoLYN4RHpLQwfgj2-eJP3Wp_MSjk3uYCpoWyCYiAfU66VbiIJyP7J6062wCdZg4HH0ebRjvbnHpYkrAtKAhR6u2qIRT5rWNlUFpuo1HjoCbNlsLl3aBIPlXK3zPEoJPtSW_gQQ7Pv4gbC0QjjB0o3I3XM7NQMhl4aLFF4zTDcG0bGbb9A9P2Vq8SLELDgF2n2jKN-ue9BoHy-QSXOeM3pOEtlQtHCgn4BosgPwf-TVDkvvI3qA7-hJC-ZbPhGwkRj7XfmhyXhnod6zCTe8xr9m_itXbMEgMvHIlXnE6dWDEOKNbAwp-MV8rh3eThyj6PGKoqDSVmTqFlAzJoTMq2ubxktdJ-7jMX9Uxba2R7aT92Ijz-sgt6W6OggTUoeIA4Wwc9tUN0D40kOneGhVo4t8lPS778WG6ZOtepuT2tNwmKrJ8FbPuW25fcCmOBMFMB98Dx2CQzVuaMABy5VnUPGAx6cbG49MoTxtoD9oH4MfCsaIfZqsZ4epwEzHTjW-mJTk0DDziICXI1ljxIro6175e7NGsLBDkELU97g55ouOGiKrmju0T7HWURVwpHHnrOCvnrb-iJv0MX1BvxFrMkxgE1e8SQqbwsW3giM8coXeN0h1j291vOUc9yGHO0CzkQ_nnW_fCqqH0PfNXuQzktH7Au0uH2HNUucUS9FdLRhVK862b744mhKtd_K8BprWHWatKRA9-CMMTTs7QShEbVowO8S45GPNrYA7v2tNIq9r_Mh5gr0yqjpwnvoavt0apyl3vipq6t57cLGz8ShlOH9Qy2Br93hi5nn1jsICMB3Olx-PFsHutC4woDk519bZKG36DfaRZsMAXK4FlpEM_Y-TCBeUV1w3LZakbpC7SJSOo2D0Rq-sGdl-OhxFonUWcb0CqwIu13KF64FD-GTYloX1PbsBI4ro3x1dKLqoQ2IsiwyDPDGHCSrRHSqqxgexAaFLBq-lKeUm0nRmcldct3HrJ-agNRJnYqOMD7fLu02wU9EQ3Di6YvAEfbsFNF_fnPVeq7CbIQxBxMqBwGY-tmZ7V3_lcuNr5KARTNsCC21rXn7G8X-lr-9zAGbUelHCQ0ifvCzcMHO7c-2LvGnkQ6L1lmufUdbBTY4zHjpQACim06moCqjfR__gepEJoVvAvo_B6RrpSNL0nFNctjZ30GA2k-gUJlkdMHYSbiCTiMtcuKnhqeya8MARHVtfwrkR_OiKLE2-0Ci6vyxIxYbxOW-ap8W5Bfk_8ygbc6UhAyaMCDawXQkBgjXHGe3TEbbqWgsQjCkT_MrUTtndiQv7yRAm2FFdNOjG4b4MyE1Hklo5FFrFxTleDKXDC4GZ939-vTHbK4aSUEw16kqvyu3DsBcvNZRPWAkzh5FAz-56-fRSRAim-xTwyFHIFBjYNlcssSO9btj4BagWi-lh_BMHN04o9-zLFtB-CG6tL_yk931XLiHICYVmY30AQNYsJnLheSuzpFszs-LWhAqxhiWLdpPCJQmmeAUga4hHjciN2HEteXCdaQ2L9c5KMSu6ue37Den4QzcySPzOZ7v8YiBpDtVpAd2cZOIlYWZ4f5LDVQnyWJ_W2WcU3h7U3ofYa4rl8G0z1jAyzjh5Ly-poKhF6rM6Wtj9SZdFG6GKzJyPmgI3EnT5SU3C_bqhJx0ah9TGnz5hhdGoIqQwmFu63XmOwY-sezMk9AX6-t-vdsZ_uw8a7GAwZHKRvfee-Vjx-QqbZbU1w7ZCWy2zw1CScw9vbsN8mnFz-F7ne1rLgZYdjTfdoMCT9ucnu6cR-1LxikY3VUpR_pWClWWLJFdJwTysr-ybowevDweIpigvwLEMkt1yNwIj9EHUDlXE4B7jjzGfhA3IXxPg6Eclo--WdFjosC_8qn5LydaKPSf37yKYWDE0iVAVJEc9odozGr50ZGgEfVFn6IjfpgJgmklMTNYXWKLck_CFsio_Eezd_dVFqrY_3xqqBlVXLi_tDLLFCF26DDR05P3XUdVzgeToYnVd1PRLNUjnNdqq0s6LTBdeTX3XoG4QPwqMiMGu4Wk3wOlwhtvpQINzd3V7FofMZo21semW9RRKavUWzhgF4Z0PuE87BG7wREWUrICqTkeHdxxIyaaLwnQ_7u5ry5gaz3EOdme1tZnpxpfmVUcAtqaVWfGx3iSiBLB_mv8dxAbEpmjL2CIE-0AO3QJikdlw7uhuoJtTbwFyUiaUw_RfuD7wWNlmamlEwrHsBClAYZnaK28DrjmrdRkxgOJgzX5tI60ZVnJJEsCdfWOB9gA8nSURlozjGimUdN0mxRFz2Jxk3HpD1wun3ZW4vcp-fYUPXh-ClIWeRuoK0Q3_vV_qNMttAxCSNo0M3pNR5lwpE-XqgbLqzj1iDwH0gmT68m9aae8fsLxkjvOPRhFHooT8y4YXqBV_H13F7RyIy0iRX4l-qoSs8Hoj4odF-G3PWPPEGkfQqLykcmFPlsQMAbvIzF8ovhlgGwSqs6aBtf4y2g4J8QL5_jKBEy9zDxAbIDViWA0yxDtiIUiVBPtGoLWI8q9j8Hg9-dbfRXAzkKBkMFgaWqprN__Itc-uPMyVmyPDycJkKpEgKxwUmo-zuVpnwjMsh2ZHCugptrkvw0_MPOixVOLlveIuz3oqUns9Ve26QyS09NXuiDUCVndLFHzXlbs3omkgQa-FbBZL03xEMD7z-mtQYtB8A-cQZl0Hs-kbiBPB4H_T_4wyIQLPCWQke76ZdoZEe96Ncs0_hsS1L-aMxN7W3GyE6Ije2BQiCcYJkBoYDcm2AaaDel5VU5bFcxe-wrcFPbSIcOjWY_L3G3_XQ3KBM42jSOlIuYUHJ6DNpCXexOrHw9K3ESuvqoVJm2fnfEKuigfB7dPOHxXCijiDqxElvnBl10uK2Z269FdwjKXu0Hn6tHY4Tfy_xkOgn9nrB2m6RE2W-y4rHwGBh0HohTo7R_EtjaXC-6-D5VlIjTFbgZpC6q_vEVyiNhlkjpVY_CYX0-ZG3Abr8HvMMP40cG63GvQLDSFiW3aol340zkN44-oLJaWKHiA93ce8gzMXPRULcj6YCn0eBMa8Wg1Xqt4sbM1PRXVs8-hofr04dvLS4asHs9N06S9yoj41cCFOnAvTICzmRtXmCcwHKrIEmai2jyKnbNExwenDxAtYvE9E3sbbJvw9lx3kXxgXccnXz9berMIuE6heNLdFyuEMo42VM17OCMw_n9xnes-yIW2IVUXv4Pf2gBoMNiIbWrdUC8nta4yLyQRap_OQ2D7O6wnqdg7J3igxwWM8spmea5zyqeHph9g4rpMUGqKShSGryelE4RvgFwRJeQSq6ccgixsf252_tZqIjYqllHO6gDddYPf5-6-ykmLdagw7Jkw87BhE3r_Gfx_m9dhk4D7V7pbPT9fUnO9jrUbUqgp-Q5Wm7FRVhD0SvwQX3bgOJRgcqI_YAxHoPg22CX1zSKr_nWNfPwbhIPGYanOVoePT1N3zhygLCYvsXvAtyHBjgIM2LyXDbwMa2VNUBnfILtntuToZYh7zagT8Bnh61qAc8glqBvVK-7SUhU0yfNoeFlGW6SCCBoktbZ5NwxYZx14YWcdQ9biWYcAKa6lqCuz9SzMReMTB-pmt_2ESRifYTuU-ccJFjshG47tF5Wf6jTWzt4BHMeIn8wSQS96SYj4KyldPeT45umMIAtfIIBl7cn80mhieXjunlDd1HTcbxZRaAg8dF4aS6ClxSg4jik9tzCGV5_yrIiXdxiT8TimiKh1jyEoaahSq-9bTt6nIAdvzwNpC1gdS7lp0kT83u9AX13L-8HdInua4r1PCdvATILbBlReBs-X2m1w_ilIRbs8OiCVC6nuiJxDzfD5TTrdR9S6rOIT33CT-gZ_eY-rU4_oUcbvO2ECF53D_op0iGXOqHuGeHsda_QZksM_2LKpFSVK2xKf_GS2VvZ5BICHblwnGOm2N6huKum1bfktwNBdBQE2_m-YUKVSU2PQNQnuCRmQdcw8aL6SiF0TgDIwXF8nUVig-g0GCbwe1Of9W3vpI5PGsbQge8fLTLtXw3y4LK041-xLbFmuseP0AIuKwXl5REzEB_u38dsgBo38PBMmEjL3nmKvwx32jBtw0XIiVyVBBni6j2umU03s60gm40GvTk0Tsbj4wWGRr2_ir36sR4a-1JQcMwLxXcp2bOUOOwDCL26O_D2LWEgMsMZOzD3IguYnotTLN-JdqtIGeaZvhA7c9PGgLQV7XNtMA6ySpF3hc_1vJnrhjhp1QE7JOJD8dgPoEgWEFv2xJjwwD2SYU_YZL7rFx6wRINasosQU-6Qcmks2fbCS53KQWAFS-VyrSnVc0pk-uTTURY7HnkNV5DHq2qQOUMR7kKtmerFNOOmLx5nWasCoYU6f3tvsMGdK4CPzy60moDM_FgfZzQ5QU0aMjCjdnFkYurSSZ8ddEDUR3zYrOfpMJNFUcZGlJy3XMdKmBZdlnR9jjzbCrSSqFv_CDaDDDj3XemueL9FymAanKhrRMb2_41ESQp_eYTjNVhf9xo69UapCext5Zc2tVpfxJEsMlQ37Yr9Rc-jYamjW8abvYAFfa36NMsHlPH9el7-XVEP7TQFc5mSBZF1zmS-B7hntP4syldSVGLfsDPoWE_HSv5mICUEzmQAD5mZG6AvOvXtZtlwaNS7TWejh4Q2ZIYi0NFrIjYIGrU9KZqVyYPEqCCXs8NGyI5VbhsogyTl4rbWgpAFJjMCPACDRNCQpH1hY9ynTkz6vKkvJUaSNABlRaGRK9J8S9pfHOZ4PZwo022pQcSSA_Xo_qwzrJPl3emTwYb76xP3T7toW1PXBhi5L1M_STEq2lNpwY0IpMInw6RikVvCx50sQEMR6YlxE5WAfPNkJ81fwcIwbgmgOS0UZv3Rr5sQCJBIkeD6FwcLDr3cF1AQmfFPk51O6_hlbwoLtLIQO8T6sX7uvTqBJuodEOIcMdSguOzFFHzrnlIkQavgA5-X2IUWMZ1tsf6HbIOcMx2Po61rGqiypWwxQXyDwoR4vZ-s7JxeM7_TSnTOniyQjWIp8pRfyYLevmu1HCc4bk13YrtuXYEVTWalF0wUb00AN5UjrGLWyBzrVVE5Xfqt8RKHFinRHJoTw1HxyHoG3IP14RhgwmtG4tBDhJ3moqjYSMXDBhPJ3OhU-lRTZNcjPHfRX5vSKcE2KDje_LXIS37mH2o7Bg2qFSeVAuaCO4bxstJZurDhG9-ggavLExpMCUlKndblXQzGgzEAuzHfhT0VpfiCCMTyQJN0rOTZthvSb45i6b7Mrto1ZsYdSphXlDlz54g6e0QP4iR-JFg63_Say0_4EN7tKAxbUON3_zdFORuync1J_0XIx_tbhueLOCIkyOdejhUe1sq7opWd-92dxZc5b-UgEjhBlz50oO6vCpwH8ck0LvbkRsB6Poryu9o0fEm8Eex4jFcZwpLJGnFtavaPymYahJOF2oWffJ6WfmSJbgdGmA97bmr7sfefP2wJ1f6wlQ4CzcVpBjrJ6yt19XPL0zwQj9jyqcAd7KXe2VK-sfvGfLn8A_73ExGBFr_LEncMTK4aJRxeToWdNEYMYamsyychWqgxrSXulKJKYR7K237xBTXV5Vf0R2FyYY-soAoIbBm-Hu_dvOAdZ3O1ZzvwFW0QgAWyzPoi15OIBW1ZmWNKoA7aAPYDPFzZ0x1KzaiclaPdq4906SA-F4Xzbo9q4DK3F0uDvHJgI3dW3ONOHZHaMZo1_EpNA6wQ8h0j1ZYdf3doDuN1xHcskMvgfR38_U0vL_c1FB2b-oouuz70pNfV9aZ804jYDE5-9FAtfJz8S_9gZ7GqqegOqTANuJvcnVk8SBaEQjgSf80Sw7ccfeEuUa15gp0RiAg90dsdNTmHVSjMZo2U4eLUmjbKs4I-MgT46J6HW2nVYOki_7eGJ0RjXjcHPgvlQlW4RFb22TyY2xpjk1UvYOoi94XUtGU3pPWp0CLX6oMaThpTL6MGjuIPZpT5j5UCAA1TU36N3RtF6X83PGTuoz4p3aCb1WjfVFu1gX0c3JGqlL075dnPoynJ89BnB_1Pj0N9BVbjvI6_SGW8ewnAFIKWUsm3fFbzRzkGAnrGyBuBZ8PRwYPlx-ovnaJThwQP15l88zOf4EmY2saCk12QJba4ySBAyaWfv_8em8CvXG89EumPllFBy7HvqR5W9l2v6YOLJb7AHa265tDgrSk2sBqqxSwQYOR3VsVq6Mc9RuPHyI2OXad6xwwYf7S2HrbT1nxeVcevz-gC6Q-_FtqrxKIcNWPJuflx5lNHVCwf7umbiFZCqa5j8iDYCi6O3C87P-CtMbt7e_-HFrpH7t6UeAqpebR-DrCE0G0yISs-gms2EzamUXi7MgPVpanaCoyt65HdqX369WansuUt1Loxex-ohJNE0pd7ZKX0Xzr4JLU_OEou-uD_p6vhg4VEFcZAcxZnuj6zHBSCYJvM6eJWKum93o0eQqUfg4gcs08FBjW1U6cwB4c18cee-DfAy_Zexb0eRWPKz258o_s--HmIhNb8GIR4lilwcoq_aKWbUP0Pk1KRLyUpLoSKgO6oCaEhAyWf0XUlW0NphFqwi1ZzRZfcR2vSpSHAcjleApAwHzfjpurwqRrsdQnVWsP4yDGpysaCVrJupfyEZPTM3zSMHDLLR_AeWHJpyK6ipRZVJtByRXi0hjSgbiElfndb8mSUeIYFJyFRkMBbe59RtokoytcYHqeLzzvMX1y9GrxrgCpYxZJ8JGEe4ZGP8CveiU7ZVmlWpc0bTBYr2-E_Yy5IzBKFakWF8b9K77mOo-aEGVcjkbSRNXpumM1HoSvUg5lZ2vaYcyBzf9T2bRNZfrkmkvzz7OmOIkRkChHchwUeCKcnH46P4sVtRa_MxLv3g_rvPEaGOk-n1V6if9r7T4nJ1KGGV65NrUO7NMEvc4NyrPmC4gE5zIvvmk9NzFZ1BkO88SqRDtEZ1a-rjoR5N_wiS8z6__fZLljxL21gKhuQ5nWBap0LjbFWrEl1xF2LjtOi-c0UnE2y75yNctNPvsfkyXuEF3wzDijnlPPV7r9Qn6riXCqH4NNfb6f3lunLvmJr2nirNU8BdwDA5I1-as7UgGXvvFwZivmaxGCUCOt4FMio6GaioxsYhYFfFSRcfmJajANtuVmBAICHhGjTVmhzpD4ic0lTmeBv2wY0hAzQ75Ss1RLatRo9gKw21scUgjhEssXhb2p7cfqxObixssFRFnUA2EIOnKUBHkRmf7YUZhF2EdzqTEnJC6_NqMLOegHpXt9z1l-lL4KFnm8G5TJyv9zAN0hEZrB81MZ1gE1e7nLMV9D4EXYr98eyijEKuZtrfpUU8FuP9ub2ubMBBuuEyjh_nMGq_0iC-hcz3Tnh4ynzqcfuCwUsb9V2I9mLninsmImrz8Lr5-bM0mDm-4Eb1z-xaRTrYvvtlpE6C6xafHL9lV0cE572MxtFW8OrfgCyGbdJS-s3aRDY-a4yvARgG6OFuod7zOHmbLZX4-reWeuOxZ40qjHnAne6Nx2xL8dPDoO7S03sYMPfA3XrT3EETo2g4ZzIcHnwFv1Tp9xWI7Sv0IDUYPNXVOzoFX8Wdr3Z6-YVUpJTaXgS4oaFBJJYQwu09DoUR00Q7H8F_SsRRCMaECTd_OH1Xn9tDu_XJ6X-1ajn74W-OFSmf1wqoQAtH3CwYLOvRok6H-_NDgAliUt9heb8hcLR5Arg7BAA0kBcpnq0xufy2dLZ3GQhf7EhR3QprszOGArchNCn3hFn_-fHEnk6FQnIX_jCOycXDitVi9vPGUgIViMw5D3uaCbd6lBNFty1PquRGTq1wgJ9pCDRv1GdO2cougJbR5H77i_MEoji_wQRQfL4vXUJjWKOm3r-eaJVsvyx9K6LBHhJOA85l8noSH3USYpZNjXNmM4PhdG0zY3NeYZseTcM8AJR2veVpVD-2c1ZfNL3kmRMqPvKc-_RqkOG9B8_jJ14J47cC5036SPbpdNSNuX3JqDAL4XjJ_OTSJhNCakaR3tZLOWvf1zmL7XqOgLfo0QHRUboRgjmMTMexszSSUC_B9mYHgG1jq-eijRhtBVxaWHMhmYipi59qGRdq0wNjm9IaGjIuWbNKZsQnIqVC6pwCLTQIUyXfJjj8q4sd5uuOcuPwX0ANV6lJl7nTTtM-npLuTqrB0D_H453HLl5dqmIDssgqAceLLhRl-Zs_PWvE-Sr87oAXeZc3RDSZkYpK9DMK0hWJuDjjQoV9iOg8FxY3Nq6HBPqylUkPv7Vd8vZM838O9xkc72mW-uvJwEbGaSRw9g-PaW6lvwKTSX-oJL_PggmUSnKBANZp_JPcQfHVhqhtUydkCYrAy3Li3pp0h9jPUomY7K9VgzUnjP4e3Kss5cRHtzy4450xXLZcBZWrimUOga5vUQXlqslg2wmD04QPEgHQ-7kD1pxeF9RzkoAL9IEzBTi2vJMgzTpCg1qrHprEZsfnnCKsEeeS9Tzxd2j28QUqrEW__1ICsFLoLckRZXa7-QwmsOtH1FotceS7h4gM7cnxwZg-HbhwXUcrVwfXCdDMo8rerBagpuERsHFlKxe3TKQoKWZaT-cox75K5H56-UoUBe3NCN3hf9NzEK2h180WT63vIGuVWz2n5ZH44Tfuoa_VupdN-UZY2fFOGzBjsnO54dBb2T12ZudrfaMlTSaoHX-6gCscxEhJFDBQ4JwUWLQABEqAt06m9yuP8f-ltogEcXPD2Iic1hdJeNFeLwslIvrll_TxxOQgc0kcX0feHFOZXpEiHNJW6M5r6P5JESnBgHoNvDcvojwCgD2Po2zprJ0XRAQqepyTGcY4EEFS1B8pb1TxXz45wBlJ0YIbkxT-XkIWFeCxc8yvo7RWsOcCUfKPVcEs2D9vr_OgQ7ASCllwZdOaCDsXayIRmmOfzkzf1ssmrLWhEDLsXn3prVXZtfZPmuOu4Y07EakPQH5XqBEgnrQT7TggS6p1J-dxebzOhVcUSC5sxzqQ96tLtnFrPhnm_UwWgSvnoTbagoOV-mArej5rFJggzcOMQpUJtKn-Z8O_Kr_Unc7AmzzJ8BA9hfv1ksUdQsc9bO9paasOxci7CJr-TlmsBQeXB_gIq8E_l-AI3Nz4keTZgAdM6kGeSK1ggaenGcdJni-nQodP6dLwT78DFsshyW1MS4Fl5dRdk4caBp8FZ9nhPrWgI4kAz6eVsOXGHar84PtBtfZIB52ex7oUtpca1nHMo-M_alGf7W1i0e_iApOlSvjJ__TANb2FY0gmbgg8JYcGVigMw5E-zJ4WIOdVhp26rgAzyEGFCQ5VcW0aK3lPtA7iGBVNHd4gFaWpUnbXTh0_6MBR4vQ5w9xfEEyDd2bXGMj9eQWRuhHX_aN-uln9yTBWa0N9cMtT2ucP2YSnyoOyV_JV5WQRTq9QxDFL6hxE5_sg3Z90sy8Fwbxi6jAoyGC4Vm7_ajSXBup4s1qpUabHkXsR1UizyxkslshvoptvVIRZIy6BrOEBoGSvK5iv-dU-In1hwMwBk9vaxkpAmd2hypCDET4IhllNLNKgH5GEDg9pL9rG5WJIiPIaemX-pROSnO_9tEb0cz7606VRDQzPdjerbYWjLoiOH_cudws9Oa47Frbuk2uARX0zLGgtX5N5myy_tewcx6ji4YVLESqKGNwDa5oS6JIXbruji7MmXROr16SJuLO4kZ5U4EOZYDLrcXgGwf6lZCWBMmHCKyuEpFgA2jf69Fjx0uZ3CV6QY1Yo_J3r7HAZklcFSmWw3EPMg_y09zBzqFhPHy0aFyKe43XuO26j-uouRra0pR6wXTJL8wX4xio7rvw08judqy52zdyLfROQXIdlFetFVOD3XlpC_JVx1-6Ef5aYJ9VdCLN9Kl4agGHs2V2NSPNPcT8iZakMJXA5MLpPc4HU3EyFl9dia9juAfgmn7WOitehGql-WqeU-MhuqLGh0NR8EpOvctTwz9LjDNvL672dnK5p-k2aTUo0rVA8QnI15Q_cWA2S1-a5hj3sF92yhgqirr6HAqkSLjzksdzkThOJT7e1feJAE13BpBXV3GpHxZ2LljhaM_zTrDLNNaRtIf-jncJcHMCOMiiASSj0Y5otF2JM93ai5SzWCZzwWo7ifjq5bDymQrTaZx2IYPNMPC8-NSd-yNtnxIL86VF_PB0aoR1P7a8p1GAi29PN3bPxADyfm2ltOv0WUQclMo2RSsz4sCLe1bJ9HJPjVjPCBPOk1eyAvTWDBb8gQJhazA6aK0UORHCRPwTK56HxCTRdgAfvqZHTZlv1xWa3necdPA30cG7YdgLRR3eKWZK6uhtRuiav3GgaT1Kj1z1SEzEKT7M7IqzbAKRi5n3eP4P21Uadahi7HzLftseUqv0e4ZHoerorTgxh9mPImStJ-Rkfu3vA9H1Kzr9jl8HE4BhlNAf5WrhQhurlDV0nj92nt4FbEUwRz3n899EodWxF45nHL2c17QEwCuvH9SbIc24H6xe0BN5DdCVrAkQZz6_TWrrjWImSiavaTv1EWkpG28tik4ROmVtPaeFpd3dzxpbfZwjiBPbun0kjOUk6lOGcWkFEH5A3GH1ZmfK5XiB0IQnj3L3QPa60zZT73l2aj1Z45LB5_iU55w6YEXh_3EmGblnoUbtF-9ixFQBBpJqI38aZQFgFAA_6nKZSQ_6b_kGPmUk8pLsmk_xwGKuZJrwB3XU1rAfXnF5bhPypEKEYaGE4T60NYafISIxEGEGsex--BrOGyjvn_hRFSBf_3UsLVFcng2nD_ZrwD2QMoL9MuITqCbaaiqnpqhHJzW4rr6BYZ6r2zH1SPPH_m6UxvZObBhEYRvzpAcFwmug6oFNxLl19qEatw3c5aL8bQvPJd1CT0JDB4QbZ4NZAEdPyM2MbwUt9Ka8eYooh4hn8mn_Y5PdXQQmeCi22Kt3XgulIm7LMKFj0YkYttJvWkzoMzt12PYQU3kDetTfmrPu0ldzVJh8tI4hUeU2b11cywqOowD3pxZFC0FjeUZcprS9m3699NRi6ioCTR2q_d4f7JmWHuEGkg-sGNhnezsIX5KLG2v4pCv2FKXKeETYSG_4jDeyL-qlqB7nhKY2XQ3ByJ5iexhyi0kDPKGXNx15Y3abNahl_08GWSN6uwr44FDftHhUVQrId9yt17PgzTTY6UyWkFx7-i2RZ9F1EaYvNE5bKbWWG9sU1m3NEQMJWMkHoCk922vOT213aXD9MKWtHbmIFApcVbnWvwXyr9XWkG7-0bZp_ZQzWUe-YA8c6ZANrXdGitilsuPlrA-ropRkA78FO1Yw3yIutpgajshFtjYb9a5vsWWBfSri2KiZJlezT-VbKev3mhlcSPnwIL5vHD8Yf-wxkca_OBaCoe7-93LviwS4jVoqLEYEUe9-aatDRPe7Dk6dE7nO5cadaXO-seyfREDoUJeH3GrjDDt8dcOlvDHY_XDyRaDnPADuO0P-WSrDFgEO7qTC1fIueY8MkfuWH1OYpVRsT6zQX_e-fCej51tAaRRqoLsw-k-yI51BjFzU1mGx3PmiJCzc0L9eRp5ZN92F9oL1TPAutDiHFTNGZVrbkQFZkTBbxX0kfmU7ISgN0QuuET0dckk3Go6ADmwYWEF-fvfSiRsbUtnQVOd4QNjQA8Ua76Lcda8I_z0rz3ZTlEyQLOuz325pwT4bmilqE0n0hCH8UTZNYyajq1H26_NwtyVPh1VfHOsSrvX6GMH_rp8eONPrJboajJX6iFz1STw2lwTtQbYxM6NqWzh7fR4pWTdmM2llBZWk7InUy3lxsk9zeuhLKo7A73MT_SQG6cn50juMtR1Zbv7ydcOrTsWZSJ_MU2jJkDLwJ1ut5kVChGus84Ba5rNN2MxPFIpHy9F8xJBWcWo4AqDNLsgq3MqqKZrTuVHHVIS4fEX-4L-ThjfDMDGH--PAVF-d23tnecA5BhpRVc0Dl4ho_BJmTmlsP4RunSvbWbyVEEKCVb4Acr4NSWJY0r4RUJ0yagdiO1jPVCeS_Px0UAB78zWNlSW6vAZIMn45lrBntweiIJr0CMAuscXDoXgHy-TBq2AbakN_U0XHMccBhlXLIvi6hwjtAhEqbrJks2KPzraPEvRPOJ6FzzFFkEIc6Hf4k5aMFf0z4hPgvQsVwrEncKu1H-IXAB3wKe2NYT_meGkV8qyyMT-b9BhW6QN8RskA2BqlU4kmgsqIJVk_rCYIVPnMqxpBf2YquHAbBURnQWubnYfDYlCCFlVZ4bUji5SoVaDdYoDO_Fxqn9amEV86dhUOiz7IhkgoJygrfQ5ohBT2uuXgU5PdgdEaOwjGIQC6lChI66Z_P-4ae9YC2HYnv4xgfcFP5u3q4US2FL-cZAeJNNaEaNmQpbZy6TiLaCESS5HwZ0qYMpDjCXJJzZxx_Y9Dg03dU17RvQ76HjMmjT5lsxfK40g8IiJTZPq5IqdNbUI6NFYdyGTKKWILHb57K4sarOcWBFbvoSPvo2SpWB4kn_1yL7-cwmFzdAign6VE2oKsjWJZYblf-VntMBNHiEfD06vyLUlKmgwz2Jc4IfCffZGVILcOZ2XaUpdCr0N-863VKc_TT3LA3obCGgrS8hmZoenXADDTNflm6-HpHfP5boHQUhEGcDUD5i1OvNCywPB_FLqZnK33gf_YV2fT8trAnVYAh6d377z6UThxhB9o3Sd8854pnAw80uI-lTZ9DZbvubDvxC2YqUpocZUUN9wcl_GY4uHupknrN4NKDn1FCogvX1TCWXYTFuIduOJ8LJkrnF5xQqhlX-NDFLN_zgJvxxJU_8egbY0fEsR5v6ybPgfnEte_yeVbNVfRCcQqOlwaD8vjkYbu0nuLgQPchMVS4AQZ-MytarToGPwPMXvXkGGL6hHMlhf5JzbWawa068dtLh9KQmBCnaX0kUneRqcM3G9PiRcl2-rzOAY3x33eYYiEQXHTBJ3o_vy5_9YV7l2DMlogv1UWnZaVOjBKJLAN4yNCzmWiWMWkxH_FfWoiIlk0AsV50Dtg41q_Q2mwXSyeCa2ZPsIQIoN8DWmlq3VSrI2wd5bIIFTcT-t3ZbST01ysemyGJX3rq7OlRbWMzHhJ81KUGiFNoOc1Xgyrs2Foj3aHycxtYTLsqtvfcnpau00YvQgE2Nhy5jDYfj0ZZjAciW3kGA_FzznheVGOomaM7sH6D6jHsjB0bjSl4pU7doulMAhPPXq36C_i4GN5nq-z9vjUkwyLIvAYMN0SRJlliPP5zZ72ElpZnxsDkGHKC5e6IRceHv_isXAllPY2eqlPzQtAKGEzBB8bUnVAE_agGq8U_XYwLKgJ46YpLF3Pte0GonSpN0qKeJEcGJlfmIEbxo-h8sca-f9d5H7XfXTPHk9CBrxglR3GhmPS6iEtNRZrCOl97BdChIiDWRuJb7scaDOVmbapeCBBw24F8rfp2p5RwgnVBOqSmntD6XIyfUrk1SIbr7-vexGZbtdD_mBAHmxYoUHez9uM_H64kRr1AWuXbr4omtLAQrHsSQsxujQoJkjxd6aG10CLHxfqejTNmmiEQe4sut9Oeo0fKPOzTDAuM47WTNBqc79PZCBvw8uk4hTaO6apttMtOT2TCrc3WgWPmYxelWb6LkcRyzKjqMCHDTkJXJAYgjBQe7nyrFzvchtsT0AtZgV8Ro_U8aa7AvSkbd3k2_HGbP3chg5n8jgzDzaPSbReO5Jt33h0PeXMr1OrA5NxC_kEwAUQd5buKXfPE8fMyTToyXAd1GDVlD1-yuuX3pja8WzUPBJv62fGsvGWWXrQijnuz8PUID1CAoO2ZLwls9jT4xqFfJvLSvwQwdG8R8w-htXsi-h1wS1tirmp54U0qWbaSVS2v514Hm9X7GN8hVW7vAEjiwuo_iVFN5HIOqo1C8BtGut5AVhHHdakmdbmOscC1McLwe7WnoAl9D7di8GToMNCSjtd9EgVh1Pd77e1vbQplB0wMQ5iXTuBTxdrL69Vn6e3sa8WLcaQGP3rE5mwtKcW9pDRx3dcefwxVjsduqaJWyTJnLNbTJG7DYdWXHgnHmsCkFlMXEQJ0sRTdqALZ2UPGgprDJqY00r2fD3jHXhoyGDpZGF5tu-ZJUwjOrG0YoeCl_6amTyhNL7s53LuJKQBnuJr35-qNXBy-QBZ4WTBDuqUo-8jxDRn7O3rpcmEpq0qCNRPvMEP2VMjAe4mwpEJB2XC8A8lUuiYZsQ2N22f8T5nqWDsaR1tt_ol99Qtg3BL2MwREPHgYRi_QIrcIKS52tjIAj4AOZq6QViblmRQXfx0g5BUTQNjoWNCFf7aDdKt67S1cFGRlM-ekS3sM90cNKKgEpWqB3PcbDMuWsGD8kZ9zq0ZW86GOUYq2b1KcljH8dwalJQw7-IygkLvefjPbXXtrTYGOCJBB7PORVrxpQ7espp0VPspQ9xF8kGJkC4Fuu5PF-mTkRqFuTlmRSX94kHphJjcHMgmhXmtY05bRHTAptujncyby9Rl5SI1qiyjH_5bM1GgPPxzDGeF7xBCNqEqWfxJyl_nvoBLHTGR0FRvOoQZ_rCPgE2U9s86AgJhZ2SN7ru4zlFhZh9TxoUF3fS9xicQGmoFyOhkOupPxy-Nt6qwUsDNhk61iIsx2dvASFbfVvu0AJgMft2TR59fnifoDXX3c9iZ3zVLqirYP4xB_rr8XcxiYWUvwyK3kTFgvFaT8d8VfhT31NWStK2WXzuah32Ek02Hn2sWISBqBtSxgfY0lWBVulUHBXqmbdDCgptjM-n85Nxp3-iXlAIk4_gBp4xluUf_Q0hkNuj0obur8unS-ZR60baWk3ESUCbpjmv2-eqr7LV2RSfjgcTt_2FTyMQTfn-y5aYhfbYQ0LQI45ZjJhOm4s35eJAtU8nD_2VtVdZ-IArCQF7LR1F4FVskXB8EJOB6Vaud9pt-bjUpvNBadf8k0jmfXZAogTP0I8YW8AfnspYE9anICD3p-n5_P4SPqCqkkl71veWVgLAhVeTT2wIHIjckVG92p6VUPiV8McRNycSK77r1Swr9Syw08ECkwCd39eG17Habod1iY6rRMXgnaBt9D8TY466oMkGPm1KsCJyuoOKaSuBOZ8rdYHd8QLcaaemuIePezQsKt1-uCk7PPT-eiuxi9wNhWl_lOS0aa_erEYgsI0S73nWuRRnj3TjmPp4MsTpF94QB_nP9JzlLeknAYcd2j8PLxELYjurcYrDHmGaSE3GOclWIGwRjw6f6SKhSucoQtDbdTBpAdpA17WckioCRrma4SzuOJIa7YD6q9LtfBDhPpVtIEcFX8eEd9xgx9sulU6wa9IyiF4Y3LALBerlS9nPE8G4H-uetKBDO1nO_ep2ZszviH8cUjXL4IJwfeq5EBY4Aq6l8m78b2xVkl_1ePeXMRnXFPpgyfzr_139xxqTwGBch9dYFgNRueZClDcCxVTrYhFhzQjQh_AjQNowb119VWF1bf-sQDQvZgMNrGR5lD9U9Of6cl3GJcdAL6CTLFbQDeqUivFJmqYm0OjUVIZKWqfuca1tf-EzLY5TZXhXeVFHZlswl0iIfIevCgimg5tVacq4ZLpX2pK3DskT7Nnr965Gs6joZ3_4NftRn0z85vLPUrrSSjt4RysMCSz3RN3RDi8mCPdCsVTR04q3Fs90Kb8uA0PFIKyCkwDsEKIFitDVaMz063jGJ82lYPTworlBeLBzyu9YigEaPgCrHjowf7cGRrABgyPwW6x3hVakhxfFuuGtm3Cmpne4nZzm9JOCsBk9QgmDZZjQ1Y6B0Q7JD5zKJgYSSbpI3vfUngcZ0iZXy4KgB9cT5-A9LxPJLMaK_abkMWBdcCNMrtIsXWXSmhKP7lebdNHQENPnCVQQeKQjj9pDh0IrAnav-JPNFA7wT5jkdg31-kzV_ur-JEMkbmJy8gOVbqwJRZg9otZqZZVoxf5wXOm9zzI7hbhBj37q73YsUc-xOd0q5F42UJoXcCO81uBTspLd_n-jLU_X3Uov38mIyHeaDT1OoIYswXrE7Ms-2HFo22_TD5TTc52GMDVTbt7EFckAThgaO_OW5hCQU7B2nXr7_KqkocultJUQY9p1MuN6YJAX1hmBtJ4s933uSz2ATj1dovgPrLDdntyDB5oFdmaDDQpuozQTweG3BFQXUIjzZX9Wn_PU1MX_5_A6rpCjrSyMS-CvUpSGhQ3IfbnQfrlpm4SqHyqpcPDFssGIcMWQm8sF5_4LDbTHNmEI3-S6JAZeio89mEYyuZ_msUweNLFZ_hEWi-t21r1i6w2ew2PAuaYohu3B7d0zbSVMYDGglmAbVTEQvlgje1zXYH6wTqNrQxCHwz28gj-mFTXP8bBBdnnh-BpOeRcn9IyD4hUVU6KzzkQDuapEPfi3EJgymUkE-RlceXB5ZShzRW7GmYHvXX03k0gyGaKF8ibycZN8brCRaefUMdtjp1WthunWhSqGyn9v8Pts-fULclgIFiMrkBU1A_nvsQA8_V2kJhtTMBgDEQLk6FBjeXnMb8x0Vaf1LMmxwkjugnsUaCppw5geMWAs_aIGQ_G3_3rHQDNFI1zFJmM_ZVEZ12_o-d070pONOoe201KqP5a5iot_OTTtb9yfTkzu5VSM3SQOVezprs-sVvf-lY7Rr7EmVC-JXTjh0KI6W7WGJP21OPTYeFRqvYzjY_lBMvPXdskqUor_M-nXVWGsZ8OU3gJu-Tftl2OxjlXeKcr3qTjGGRcjYpWhC84nDhcxvxXkGQJuzpL7045R1oCXw7ta8C5uZcrOTCZzb4suOCs5uHHtgkqd5SO9hhue2otqZQm-fHBVOpzN7kMlQ8EEpJfmzradyA7OAs1rQqm7__f5OYoJ4J0zE93KWR1MAEK42AhGVQv4fUGZ8vbA5dPgzGrDvvrXElXKwnzjgVx20BLdzX9ezRdHBrCkEn1t76WvY88I0JWM7Ucqxd32u33Oza9BFyzcrp6Js_ESrqAbJOC5jMAXYF7sVaS-i3R6CEy-hwDzzzHmybMOQmw0yD14tbP9_jdGRjKnq2Vi5tdpsXnTiaN18bHqaVlNWQs7QxUENcr_eE967qOz0xok9t00HApEKUroIyq0HBjL7u4FfdOUTgxJCwROBvrbFhuYN9FTQ-YCk22HShQML7Mj3tCRsS2GWb2c2GdwUl5-oMYnyAc25-PywB39uHZHFVYLpesYpkegn5cAQ8HLYIEp8Ocysk6rJO9wbJuK5UE-1BHKy6xUhd896xaKHsdv-cmB3bwesJA-Tq4R2Kf6SxqdzB2r96-DXLkyYo17iAScOK3kKLDcuuaiDBzD7EKepxLdvUTb50FOolu2trzdXzymcPwqvUKnEBk75T62juzwu2F5bI4uKeCGhZ2ycuPxmfDpmtzpWdrUWAQTAgsotMV3Lg4wx0hmDU7GxGDMXRHcchecuNzo8sgzDScQ8pAj4NeBGj6ctiH3cJRvAw012fbKOiZvn_MqAzWgYmr15a5MEXCn4YKGSk-EBG-2kVVPWszgyXwAHP311uYNuQ86Ts7oF_KuQT3PPN4hNHCgLE-p1prA8jPZMBzItDcD2CZf0exOy1DJSSx8Zd96elyB0AP7RGSpYeoEPxydylZje8WCEIESH-EU_28XwWr0q_kP6q6bxlN911_Dxn9o2V6Vxci3jgiEzuGGDflvyHO6fgGx60yw_lRUFW4Rr0rLwBd-NqQxy7rqZOISiH_VM6vq_bR_Gz1VyFqMMbqNXxwTfTtagnQACqa7bM0-AG9kz5J0hY8pbB2XK_cTvFvT-AG6VN0RazlgV7rpAAVD0N1TGCVN-v9mrVxGuqrmr_8fnQbA2vYkxXD0e0TWsBYvRU-YwgC6qlC65dlFXMR87F3L1Y_p5G7tIYObg-sENUty8bkVawKFg-JALC9VqYXgqtXQonZX_wABA7jfT7PSHiw4qivAEIXmWy_nolO3LxkcGcGQuG8bV_-EFk3KEgju9hKnNs4wbTmehvKPGvyMlnSO95G0KOhKE7j8AFB-QRAukSabh8o9QuI_NFGwM7qDJKcLDcKnVCgUwjOEF5MBUtx5-mN36_w_0r0UZWKndGIPvAesMwTV64EV1mStkF5i2RXaInrqdBcyLrb7ne-4apYfD1_UFsORA3bM65UVPWY8fEPo400pRr-vXmZP6MHLvd1VmwxqCIFHkwmeZvQK-iIlzTaj8PzsuMJKa2CrmoxqDN6q5cst1AfI9CyzkhprFAPeWIxgZaDlcOtjLdGwlDNWRPN-7Qu5VHL8NdefPDaRaUvXvnzkklENtJTaU0xczZiqSMEqiXm34AOodl9gzru6AzGGWYRuG40Jx338sgyV34fTRKtnqEZ8pBOepc6978y-EpjJPGn4r6uYk714nSSNqGG6pT-rmSlZ3MVLzxJUidJSTPXC3lB3muKc7jr982ojvmhZsZ1T7cj-kvzgrmL4XXmiVs_3JMQ_VxvRlJkCr22asNzWxWqapO_iZmost2yaO8M9RuG9lxlvKd_VGXBQEWx7dRqhr-cjsFIU54OJf1UIl9vppk_eYEnQVPX9VAgFLy0MVT-3JE45Xsf_tHdWQaWqAGfSaseA_-aY49hbuvDxrdnfBiv4jBwJU88EIPEYVg2O7whC9YiK94vHVaqXMhOZ0hq9XCc7vaLiVxmrS0DBc3PpW0goLBI_IEipl5ZNz6EBbHfFlJpt6mEzzjeliivvWLvHPSu3bH2kLqnHNXlr7_phTqWsBEKrA2V7F8C_8T6HSqKblyBBHLNUxSGvFfNnQD1TyBdB6trkemWRBJWHCxX70u0MzhKeCzH-ac1AXGiyMYuTUTB5cFNx6t03GrJIBynovLwoJlX2T4PAqNDJ9fgzxwwT8l8B60hNoWQuUGXWyBbR5b5SG1qpltSk6s-VaVuVYPitctyl-p71Zkgy1gmxWh14AmtuYapJ1Etzhsu5154XmI6EWPocbh31diczEm-hLtPNrHO6mfxxHcIVYp-a_s5k5czXc09RAhaA_HOeE_ocqQXOm-k-BFfStojWzfhSROIapKJJ6vGjMa27VPB_zj8Qgrs8MI7kIEEnmTtBY6QJbnEQsfySU-ex7skYbpZT5YPV2Ch3B4T4ob4VhhElxdQC7Rn1uIPObfAcFkQQbt4500IkOix-o9SLqjAUTiOb20Ps1Qw3Tlt7DT1OMDOWokLBASnDvHLWfT_IiU1eHA2nR4ltTTOjdQsMJeuzInJinGe9iFO6PHUIfcIAbqnJlRX7xysakcxgkA0RZ9MRgayYbBmjhah25AbGZ99WhiN_djH5MP4QN0Re-Yycoahf0lt_XGal6_Yb9UuWuw5N7UuJmsHXYlADsQwcg6i07vHJ4UJ6BU0ckFxCbu5By8zErtbTWD8lfYZiURHc2zOSpY7oDV4e0dqVC-VspqiETDJcfqDHp_2NbHgN3bs38bNutPR7l05W8RmCyCTAAqhzs4pFEMFOyHbIMAymGinylGAdt97qiy0957HXLAgMBrViB7WqUPXrqpjhx_Jar_krywxxgfs1aev9hq0g1Y_bf89l_P5PqRSAVfcCX1N94mDOuLpA4hke9RIeTaSpHV3t9uDQq45zogYSSsCQpDhmlbC9ZytoqnzkCQgXfe22WQSpYYKQdpLgdD_k6n0f2-QMR8284JPkFf3Pr6oPNlzor0ib9yNW1T9-vf4NMjLWBC6ajR7Uk02iGjeHclvbUc1TtU2vLJqu1NKSefUS7K0FAJPl8FwLJaseykDy7BpivjceWdEeP9NfxleN5wfHWPR066MZjlz9JWipxmO8oFA-N4KP3YTob9kacBo8lxSj_J2QIiv6OpIv6YEHPzyNFNjrsTgmmQ7k3r9neO3zP8FLiKFWsQiZ4DAJWpx4zXkJcfIinzBLNjHT6fWElhGZgGVrCJzzkUXVzT7xgMwzKCxK_dIUBcxWRqMf1-mfOAvZ3Ru1RdRmkcehsgtDLdvXTKGlMbTsYSUw37CN4PZHd_V9oBth2CVRuYSCCD2eCOCPoTO93kNlLObx_FepNCqLAckNfyQGYfA6u7eKUSkS1LBrlLc9DhOmqOU4-PGd_6tI_Yql2fUJgCTGmpG2q6sizQIRB93n9yz8Ae11sGUtDNS1iFOibht123W7QhlIx9oypFUQ0OdEpHhDtBwGclgpK2VaxJa1o-vxxYf1GwvAkZbH32d2weebF6BQEzuyqJXKX6I-2Txk-YCrAD-PsZHRwcZJRwXi4XEOlV9Do1BeIoTKWeaMiWdLqjnbJq6oRlTvWMM7WRA7Ebt5JhboVZmLMdoppnIKnhhBILbFqmqTLPWeYqNKNTVGfl5wkFGj2oIozExq4ru5-Y5Eua0yLQ7XhTx3Kvz1AcLtdWd84g1GNCJzNI8P_sEaWeQvMCUIxu60CGPjkUD4p0oT9gW_ADdII_TRnD9UncIH0neajQ3K6nmExZzOWSmYp1kcqI3LNseC0ssbMitTidZkwMN_FLHB0HA1G-OjPPjqCzzE_3JCBcLxJKc05RYfI9hUXFlk-LbrkeNIE-sD7UJELY41_vQSxI4yTnAtNgcCbKszYmSLk45ja7_tThFXoq5838fDvcKDf9D95Em4Wfk3KT1tZk0XMYLmfeWsB8KtCXzuDf3xNkU8GTiMomHuzKurtevGFkel2c0vcHEoWGMx3YofWTDMd5nIOZxTt0PnEuxptgb_PTGzDSlfks86V_xIdNANeaevYKnR8OrDi9TUgH34T6QOaxD8Cr35flpHmBbdBWXO0Oa5rPjFFVzf-J-RuAXxRkZHKWgNL5kybAtaaYykR8pgXj5ew9pla4H2pjdD02RpxnlmibKWUuU1uSGnvLxlij64ajc2cehXC1L_I3MkFrNtyrI_voM4gV-fqn5eG4ru6-GKr0w4XciwcJbFWuUGHQeHDvqUIFTDLfhdyQMrFC3RPRVMzai_FI3OzIpJrwRKSi2_TUSjcWGR9YsOE2Myb_pyDsUW_P4Oh6KsaUQip1RjsbzArGrSR6reuHlH1teKbBVOCLkERsVXC6RAm-AY5v21UFvimEtwfxlQ3V-l27u_FuNNpz3HzpbB2j0kkPiRYK6xPW6CHSLdkdm25f9pHrdEOGr4LiHUAI9Wl2JzvrqMKxVyToQJ54Z7QA5MAllz7xkJvl-JQ_GpeejvMBELQNXkXznW6wL2avdLL1VmNewKVYJjb9Gl021FGi1_pwV-EY53PU-rnzWOLIH0n-RWZcqTEuDgMB39uY1IvgsvGKP4JVLU1xZcywKsIoXDEEf23prlckSSlU6m63y5zd_p-KeAO-Sv5BPrhBMtzJmc8GAjusUqdYw95Fyq0jSFNptp1YU_QoB8weYggSYAyv23nupGFZDS6q6t3keyfeUVtKKcVNn4EojxrS54eZ31u0t03LqTWcQwJUq5ehR9FtUuN_cPjIzsujkEiNUkNcNSuPoSNyEbRFpjEsUfVE_5dmRl7O4tCiTmlNT55B8Y2CsjPfdOxbORZNwjLW6_ai1z3-YqNuowlUEEqbK1ksTVkoLuA7hNfrxLVnWK3xEITw0e855MxkiW6sRaVoWv2bq-aXmXjcY4nDiRKxh49inn1dN_i78tS3ZaxSRMcdsDYCUyllPS1HZLb-pRZwkfXrMQfazG4fCQixSMsbeOy1Jfzk3Djmi03EfPO9wyDVVhGgWq7iWey1JlFY8sUprp6T_cYybo4CXIKvbjhXft-l_FwCtb-8EOSebeXFgHjIadktaclMROqKqL1yE_ZSLVsdqd4M8tmS9ArwIX59tKhhn0lIAB-FfOiXinzmQnKoGRaJ2fsY87mabNb3flIw2rgQuXOeLA8mQZf5jY0e-S-dpqp9hhBV9aQsTrh5S_QYpTCcSLPvCTAr0hvmCWLjGWCpVvYUonKKOjpEAi90FSXvevYjmE9t9wJQKO8hXz2LtwO_jElrKvl9o0h7Jjti5Q_uUO5vokLD8JJHH6EiIQucFE6AQVN7ixwXIY_mGe--i3xY3Tv5ca5vGJgUwPxGG4_1cFtXGVxRiwRSKNIDWzQJoALA7aKRLEgpg14f2nSXYd2uQ5Z-F9C38_yFUzVUOdcd5oCJb2xRtLY3FYtfVXzOHf6I9oAyA7-t0224mGAAUx08R-E5H0hURdQCZu6TkHuWStaeF8iecpuC7BqxFb6iGDdwSRAPWFiUzjUA0b40Hl7MrJ1-ODFzZZYJtV4d7r4WUSkEiRzcrYf1GBRrHEB-XjnMCA_DX74tYXsEewp-rAJ0qFrTQJXLTHih_efu41g6so50XPv4hV2sL8NOR4CM62QC7vlEy-prlDt5EnkPjgkTKv_VYOODsemIk8lowAxmoCHxBqY9Z-h7SsXD7tOZoUqSDaEyz6VCnLVy6xJCjIuRtVXWoLOBqpP6E1Ob6l0o6lo4pyonvniS4XXljKC2nnAp71eW0ca-rkK-_emxB_IcdUWgRgfbC297wWYKIeWg_AjaHfdnwrEaBXbbFIcDpzdKuLDfbC2jiEmLiU887hs2rqx1C438ZyfoD-Yj-jjGzXLBNZ8yt10by8BwpzWXG3tMgURQer3qFUs5t4aQnyO5jtB9QovJL3EKyZ6oiNcPJj77RX5RQCzmjxi5Ol148p4lqdhl86RRtgoZbtWNI4EfzYuR3-vGzhopjQK9TgumGoUxoNuToZedlUYJDH1xalprD-lQC3GgEerUBtXlrATUj-DCOjuSY4n_Z3phNuFdKL3kcjpe2eiLlHFkey2fujfM9jRP-Vh4cW0cW9ByLcMoa8n7FRMymaZjlyKslSM-K8fs8ZR8-XxMaOM334581gOH7ymAUgQuaEu5ZHyXAJWBGjD0tklFrarymXpiTKAcduwvy_pZtph-c7U_wRdgFZ-YxczaheliRlGHmf-N8XhGEfiWH8uLgdRd1RFGaVFe8y-7i9lrNSy1F3G8DEPr8B6CJaEHACOF2SGKBQb06SjKfdUmp4OP5nGSV49JdmXtLw5EVLmb94uVHfTn2-DL3_8YW_BCfHQK4xpCHMQb9ct1wvI8SocWc3eCz8M2aOnazPkELr46aWqPNiEd8GD_R2_mYFXbWVHk-l6-Hzdik_MukjgsJZHPhCmQpxOptIHHtdtmaZCupDJDVJ3bqtGTUpfzz92YStA0S0FlJUZBnGby4ZZSG5RHu3C-YcT-n4R7VFmDyhn-9ovHpg6PZ7OWvXxMinV0HReoKq_1faES-vuVt2lrOiK-L05v0eOh-xz5yDAx9pYyc5KnOldfeiAX8nKBEhMji-jDShiZOKWh_4_H-Xm48tHbstCwAls1dw3fcRLHoWxi-uBSvdZDXbWBhMH5to6hIxyTXqz69AnpTrPNCBTZIFBvasHHSORRl1XtfrkK-beqVQDuxfpv6jPnmrygvtfDbNBS4G2dtx0N1sCuAUqTCKXJdGbXFxqCYcxzRpnWsrtr0VeiMlAL0tqGnPn2ru2eAwGUlI3tLZwRV4AdizZEXfH2dSWbIQ9eIvTcTvvPhm4-gYjuLof5IxuPh3VsDNGVU1TPJzKbLPfZOWzqZ5fjcAIqXTIXbVzHhWo_qPuP9zrC0OktoOGY3jvELUtBgqb0G7C8HugxlbKnb8YFEgZgNJWGn3C6yD89QLmfjYNQE_T-gtVvII2UBnn_KXrSwg1b72nEg6dj2pNxZ14z31kqrb1HG3F6yQ2nVhSeOg-AuMpBzRar37uIpopMypJRfvQywdfAm6jERBjzzJWWk-fGZNWBD_lATcov6N6POQFtZuitfqI6SYdlJkIMc22ZNshXGZEKEbs7d9POixzdCqNJI_JyjQJvspayKf4HKiFuvNY7P_UXG_Lhx5YrC9eYzSx_7fpIl0Ns-VE-urIZWU3ZKzZFlagelDBmnxdPBksyieaBPDjTqVEuQsQq2V7-ZEQGkkA54P3p14WSziyb-ZI_JslydezujnQJnwY_sXx5ZMl3Q6sxtCveLecWezWHQ6i2PfzusjlEWgINS0s1vS1C6bmA9tyswDNEgKC3L29caZmFByAYSaq9WomUPSUhLdH7WgxgXbFGw7QSkgRds2y7YlpWDV-uNxx2aC4wGfJldTbB-RLz8n4mJpYoByrxfW9e71HRo6pHRk3lu6n7LnnHcWRctPiZKt-InuWLw6GCAejRD2z1EiZJrrQrrMerU1DfzSeESBzmKRuRKTqEUDwrQcgO7t_1i1cB3OfpJuMpSzgWojbl1gCTO5WtTYi3o_Mq_Zy4C-u7px18XdM9dkGvOatdNNgG61gMkPFVex85m6ufYFgJY3UggoQfbj7YR6KMfmmvsRPZOZZ2Z7YEhElQEbnPbFbJ64ZpWF6pLKbMCM0tPKIms56spUBcgO6GsWd1VbvdkvTe_-vjLL1xM24L802jAbXmBuKWYRn-v4TgTIyOJuDJ_OvEixj90TV4MRt-FO5MBxS6op2a6a1jnN_6bT2ixKt3ITTTmLU_ZeCu7mCGw8XDLYA_X9qoRhOQ_w1gXD9cK5sSyAxy7lbt0CIjzdEJML-3K9UW_A2b91leWwfqcvMC7NXUStf_I0xDcFMbzvL1GVMipAJ3ig3UziBr8WXd1POyhtFHXP2o4DRUsyA-0-6ILJRXgq3dM3I1QswMbT_9w9D3OFcJKL-RorXhCd-clRH3ZylErJxm1-eaRaHe6vS6sjZTSzShPZU5PM9wccbHAj83CpeI5Kz9g6w0SzMvFtks4nu8zWKwhNlaZZwTJg92QU-6oS4hGxQdHYKuniBCdHrAybdXb8mEEEctWTjRMZOM87Lenbtd70wkzvM1tsawtWPeIbnRKgkJHoKeRbZuhUM8dqDDoNPPBuYTiTtrLWPmtyrjJUraylgokiwkTauQHD5HaA3CiAZFRxDUHdzFBew56QPY69Lp1NSSzHEMXrtHZiS0ix3ky87ddugu48KnRK82f4NgByhGVgp6fbXjItX50cbAPXXKooyv0JSnulW2db_33AvFiICefRIt9zeG5VyjQ2K9k8Cx4FjweAX7PqfMKyyjdSfzFb-IIomPb6lVIEdP7UO_OdixkSFKaGgz1IuP89tlc3ZEHBsQlBDzqBccNHRN2-bozCGfBs7nPizn3vMH53uMDHybWl2KwavzmKu3pcy0BjFfJtS_bryQK2dm0BhdHgBNHXXXGSqjegTNmpLFadbzUHFfcIgB8MBKObxp-iIKFn6PVgt73f3alItSrqIfHqSDNxeaKFLPAgjyX9fbN6F0jam-90vzjJvf8WXc5l7TU4FkshCUCN0g9HzS9RuIQPPmf0DO5TIScrw1FHpqprRHTAIxXqDqqV71Veg628GEkbH5LdHrKpy6Jp4S-O5yMZECwWed3KdYqoCAZA81Ntny-7UK1e-s33D45UpgBf5URKuJZNXxgRb2-w6eByTB-izpKcNmZ8KfoYd36sYLYNhXrg7eWQ9IciFCkQf8v1WeTkJ3cvI-f-57G6Zr6WcboFVWq7n9-QdEoxRc6YpAPPNpuZlddBuOG8cBQpZ4aDjrUkJgfi8e5dv0UbsJyXfrLqsp0TXnWOs41x2Ug3fRPaduyvvCWhAWXJa_RB_J04KXpI0Z0TyDyrLqQkSy53U2mHF_38oQuS-t47Na3mjJqLRAry9FKwhqEnOh33sKlYmigoDlZV-vynKksFrcJ2AZf5E6W4WywcunnRrMaA_VWcpdx3Wk9114G0GdriKD05Uuw1Im9FnE-ovL7TMqccodFVneqO-qRMcGufwNzx8jhYXqxcZFyUK42K9FoGbBSfFaSf7BcBom816VnbrzDdLNbT7aDu7nRS3eXLhmCBzSNnOfvIXXtVxCa0KNPPw-k0q9veups_znSuXIupIstolwcIgBA_C2R9SyJN5scGjso1ns6W184FijugKZud_SN2GwiPj7k0SLgx8E1cB7-UcNvJXPk2Wl5KDJBqo2EIWgSkeXPKpW0E2D0R01Xlxrpy1I_1Ln7T3pFXxjkMEjGKBcTZEY-4Fyg3lN7nTUy6h-ulUQ8ueO48Ql5Fi2VnmKS6YfN56-8AkDATkcTcWt_VQZ3PTL1S8DXyyAc6IYBasPCRU7-RzwNYWCDHziOUCpMUF6BZqmlf99wBdHS5GRBSBl0iTptFlAMyjzIDETDe4wDCbOSeWXnTRlwiKvIfT3PwUAo8K9BMG-eBtDmMZhoZMqFASeZbNxDo8YBhOh1yH7QBewjvF6xcPwQXJFL6Sk6Yt7CC63m1g_yQAZv8PQQOJzM1bMhpSdQyAUC2Cc-dc2sWUkQ9zd_PclYFFIRnFFFuywNPb3jd8_wtIZySdxPgJ3l-g9_nhgzDTjbeBKWqySpabnu8If-XLqlqi6OE1HHutR1UlWdblloQKu6SDxbLDfJT0siLhmZPVjCcXmIo05fiuD1pNqQdxDBQoJn9dA3RaOVdaao1D0xVA5lFL_NucYiRFNhQu52ROEE1uM7yac1pWMNdyav6xqrtIa4cGD9vwCA6Dj2UCay7vU1rcY6NIehORL0ToVi3ImsVeCg9_1dW1OqzQoukbDJJSN61gkyEkOvGwqYFlb7CxEMmaiLC2rYI6hZFXaVBm3icl8-Ygd3ZrIJOLuzwZY1Kjj4zkhY1CCg5fN0Vn8doA68BkrJmo0s3TBjod-zSxnOiUdQJtncMEnh1AmgN3sFEJLIcx--3wtxMDsbdSjnJq0skHtGNZw8q3FY6V9UJ8aJ5y_x5fkJRpJKeBbw45qhasb_GZBsqUzwMTiuZddkyMcjdtHZvzWRfbLltv0JGFoiBtcP1p6NYQJfV9ese9fL5mx6YscpnfG8aMMZaFkMTPbm-V4OBi_mwtbUvgfpfCAKSHp7xZ9faKopZ6W3vU-mzusC8cGnbqNJoLGbbbCYvGb9WDt9GHq9_o2FwLfSm6PF0PpbT4iB5epys1uvYwDuYy3PyCsxwofMT1ffFagxDVahT0Iealrncb0mzFbegBC66UDwgc9yB22DsNGs1nsE17tFdqE7U7E18cW-o3p8OIVICFxN6GuoPYXJ_bCOrW6awLD3ilufLUTzJgwhaai4D_bZOb57ZWzMcdMnvXWHS4kqq3kSTkMYgBcb_HGc44tLcr43HhLGYqcisRtdhszaCxOatAKBezTl1KNqduq5ry3jfbj210sgoWgK12_UvggRdkFrstbmlqpiROYNKQWtcLli5-8zZWexAdtzV_XYEwIpt-daqmEMHvh81pZt59N1iA68eH2-bx-RhQLbDb1b3Ca8XitnEuXFAmeEw8jngrTJn1OtrX8JW3OFLAYwNjGRCQ3cIo0Bd460WhkAgfcpbDqXqislOAoo2EMEmJO5DvEtAymWQNR5Ssx_u_IDfbCf2cdKMvCC_ZEI4A94RDnxMFYXtlQXDXocGsFwg1NpE2d0frhmfyR6dchBfn-OYlhlN9Y43u6EXlapp8ZY5nIm9C0aARHRuT1IX3Qrx_B73aOWL3T8fhC_teYPnskInKvA2qNNh22ndIQWo-sQWbcK6xJJUcc8wzsDVNENj2ZgiN9vRACi9GamX5mth1CmjdtqNQ4hF54m0pAVC8OKgOxmM86ZgjXLmDj-xyVUMMwlzUbFR5jaiL7BzbXzCnLLTt_4kTc1QLo8jj-xyYhlGAQj_HUQJQZX81o3-X_HgEuJ26XalLfxt3qp9wnMsQf9do8eUQGH4ywBTlk3dH2mloXhLSAnWQARPOQ1yscGArq8FiUc8OglXz4E04nwnXfUVpjyxdQTfaEOic2USTRENshxJvD6ikNE6zzyPE0Pki9ZxTPy9oPoCg5IaSrQ7lF3bHdUS8i7vtRX9W5JyOXRuh1EaFhbRWRU7efkZVuQ_BmTR6Lo1OOhN5xuVw9lDUQ8m-EkWwPzgbQtttnLH9yYMd8rtN8FzVba-gXE1gLfGOsAD9QiyWyAki6MfSYhPnNkg-65R3Lz-tKgkf-LXQG01WDZXida2oNW8P7DEvPLglRVvqS2JtSCfOhNvJiLgkEnuvcbcXkXQtTgqyYRCAS2I3ux7PCB2nxoKYlFlsZBb3KnuGCneKm4OYYMhv-fkbJkjTgieBZkVrtidJby8TQnv09wIUGn-UVfEeK8LkE9vs0vUag1cEqNz-yA1HPBUh6WQtBdCtSwMZsnBV6KQSyeuybb0uXlTdE0IyQmDiMKwbf3tQpkjmKEA2YzWgAQjNto0GekyvMUTDt4_G5mu2msYf_ytgROilU_3L5mRMpxkRf7B2cZjRcNVzUkJrZySjcQ_K4lpuMt_vxGefFt8vPPFeEUPeZaEWaywSCHBMhuvXTPvvrx0cXRmXhKL-x-LgfkY2HDnclDh524JzOmtjjSqTRvo0xCvLClFmDAxByrODCUl6Ff8hlrYYgrVcL0TnOrMcFt2PHHj4HAnxik_B1Wv5IfvaT-XOhpfDAmRLWueHO3wavY8ZYRs_rc36Ujc_feDa1rech12jmzwByME2CGC1quDoI3YRSXQNd6OpGzlVViNuXH_sf9BO0co56ssGS0M5uQjpvp6uAqCrsz33nVyeN5JpILHn2geFPc8jcwdCYLkRmr5upDaMtyudGY81NxyJ1WNLOrWXth9ofmKaYFkuK9OBGNXSOYqA1uA7rcRDXONMfeyWE-OCsuqkufBJeetQBeOVG8cXJH-e5OAEh00RvpgpVbsTCCxkUqC76kemudnv6RtM2BUfugc6z9xpKFYO__IUPzT56p7cfSCCfuKNzVQIr2tXkSh0upIqeOshwwnyrRf-BIFNomTwtvTYpmkk5WsyoKAoa44TvT6BY0Ozr_PkoQl1hswL8RYUxXSb1XFl4z7CuWitz1cWp8YP7XfedRV2mrsQAgXVkBaI5JzSD8GW5GQuRns1z_UxBHsSLBfK4l0VJBKSthp3kCrzlGNj_LUWQEyW1DYc9M0RBYBRkTinMn8VTrjhn-_7uTRn1wUjMivRO41J6wGN_RlowP8qFSjnqc40E4l3rXJjdL8dL8TIWhDxj01e5GlHTIBh3zGBwiPHiXqMtj1SmURa3WMVNiGSi2Kb-6FYZUuKkN1lrKf7v7tyfi_nQkLJDdOEnpRWPRcrKF5pTKXZSXMjj6zJW8bnj6UCMEAt6q0s7Xyvcnh-NRo4cZsKkOO5fFs-JAHZ3FIvBriHgHdpGEceCQUqvbCm50ErB3F0yImIhOiffFT4moiFBvUj4PNB5VircZcaSKzu6QdCmYg4Anm8I0IaUyfq6CQEQMTEHrrk-v7E_h7fkeYIy1XiJLp4-eWKs8rQh56y9IulQ6cipoYJaBcRQFvb4l57MgA0IVa6NU1Lh1Z6iMLKIm6rrIMIcnsd88fi1oRHRk4mjq4jMSP_tw5PYJy2P_DpQM1UDubWCVyjKeZxtFXLBC8DON2tP8FciTV6safKYead_UZBLCytd8w1TLG9DCmBI_68cz3952dUI10kNwrEObHLPu-3r9PTwD4gP27qPS-9ndX5VmWXRoD7ftTsL21tUHK72bQ7eh1ggQ1NRQyCQgNOks_eyEN9MjMX6f7A8kioDIyDAc9wpE43tEl7oboMfQx1BtxrzcozvVWa0YIiKYyYULHX2ZBxqIge6-WQkzNCzN7cBZrWoPv6CK8isM8AUkeuMAOav1UwHc9LtpN_e3Tcw72pKPh2UqfUFuDDMJk5v8Z4_TT-zO2TaysSRxmtHHdHeCILBAWBnyosTujwF01vyqc-eMGBKkogvBKhJP3ecALAO7L2gjNYI0jHQPkHsc9WkHVNPF30UF0o2qCd_T6950dZ2zJ8VX69gw5MnEoXTopI0WzlNAG0xEWH_YqUBLjJpdrOSwv_Ick0MlT_KuprlsbOjpjSh0uE2Jn8F5tCEZU5jmBzZS5Z5-QuyC-Ip9OPFLWqE8o8D7yyKb0vKo66XqJ2TrQhVopCrVhdkAfbngaulLGRrZnydIwjBQqLTYdsWPW-Ui2mza_KIdcSMn0sQ7RR_M9cozpnLLA-Yv3rk4RqxEAuA8RVSfNzEAnVxyZJFyWk0-Yir98JVZ6zZO0H1Oo6NQtrM6zf7bJsAK46zkc7Q8vIo72NJyBqIns8anNtNOMmGo4PsDx6rlbK0_gKJ_XbB_dwfOyi3Uf0__o_wFLiIP9iXinYI65kbRJJVmaDorJC61X0Hcj15hk6Ac_20FF3I7Z6cWRBeAf2bXBHFkSuLN3XeXDDntD_1V32PwtJ7E5xTV_7xSMMUvn4KFJkvjvtynPJEXd1z-4b7Y2IHgGRZzyjOzfT6Ts47QyFc5nnWnzWAbsxsD65gFcUgcyGZd2xz5iIYrwNDFUpZYkh9Hh9cQ8VYZm13ChH44C_nv1itgvS_uVTck4DIZq7CTXaSpcj549NxXln387Ftie0HE_qV_ALVAQdGq0xx_EvYtli1KNgoj5LN0luHT_YyvVg9gqwLjRnUCEX9E4qH5naSMJl7i8QiBivk7lgINwQ114rSctrv2cUglIxWY5VGG-WqNaf12znrOTRw2zXjI0167jH_0XFZchQMrU8cCwEM1BkNAX-oO-zTx-vdFDfMmd6lWrceiJ23_u_ATVu_RiauAhivfCT-pie-lNFPxCwvcG79MXv3H55pFgy6BGyr6L9eTF5PpqM72TUq-YIi4gxBybZFL_8Kr4sUuvZKJ5XSLpVkBgUJDczW7uL4HIc7P-2K-gOXjyMdTKP-tz582F5bfsJlBFulDHR24b7ACmILg-7NpCpE1SFlm_nYqjNF1EUVX-jTEZrP-nULcWcBqi8S0NIuDhh27gx2wSfxa7t6vVU-unmMHUhGSkbN3HiycQUU0bU2rjcxJ6JoVkqMDxUoTL0xQg9FUItAR51zPZipaSY5lC-O58f7fXT92lfI6lb4LspJohgmy5VJNeFNDO4VWvtuCJo3_jcgMLGD_8Hr9Kqi69NmUyDsGmCNKJXVYmxjT43wWOVVtmXgW-VZiSpcZcdLwZHrxy-1xPP-6-qovoQDiScrqHaCMzbgOaXB_KQ20pReLAwUqmnD1NNy43F64c1MGib6dm79WjwOWyVbKbAfUJZGNUF0V3Ga_s5YUTVtb8yyCLBX1JUKrEAE162VQoaL5G_iEwUPsGe98ympskGCsk3WC9oU62ITD8nTZ8sA4ymNNXvSwb8WCJ5zNry0nyN5fRXd17m_ZZ_zYrlLlfn1MsuxYu5RaYW6wnupgTiTWU55ig85Bhnn-koDdO6po52L6JWFOvZoJYbXu-i-xwvkQnoar3rvva6iFrPEssGNKVRIEqpy7_LeErfDl0dQTdVno5sAeZFI_D2NZq1bpnO_DRWJ-SWzfkBhCOgypWv9iIGPH6y7WMC4Z7idoM4pXVUjTw9YJYAwVO3QZ7yiZjuouXEtOyJlqLUPQvUsWDhH6Fi1L2XMGiqYnMFHWzBoy1ffzkksbrQbaoAH620yGVmNi514nJmx48sIm8SNRp19t8brBdGaosluOLTCzXtSKSIIRuzRp54gm_6hWw4y0FgmRc9yZtcJTHHacj5oW4cwzQgvejxaItavdTEcbcekaHoOSGWaWGZCIgO1nWnR1EvicgAI1FESK3ZYrqGI5gOHqRgBZMTN0VNuY5eydjQZEiOgRWdVvCDV-0hKntgwR_E6SZylYKjtcPBsLIaGOmIX_TbrOJ3dpVT-671soPSe5ieBaT5afd3OjLZQg1AeATwpEsEenQmWnjsxnhmZS_RwqvmEEQ58VepqVYu3kOPPGgycZI3DlyUYYqAGkEUJ5dyWscc-5AGcqw1XFf0m6qI0fg3wa1NuwHPBUzBzcGFn7kvQNuit2qD3Y344D8gtrsziYr3H2HtbOlagB98p84ri1ogkdMGVcbGAZxK8KCwb-GxQC-afIaSYGmvRlGbSEXNn0bRo7eEWBP1vHf_LvjEzEbC4PasLjSHzLoRh4cEL6CuROlIUzghkNl0viGINoKd0S0dRw7bixRzvMCVz5QTrnb5YEFRGFPv68Hmtqp39e7cWfEMa6pEzbQz52h3NSvVnKA2gjfB8g8BikHz9bd_akC-areKrWxvV9OHh_9_pdKBghcOOCE1kFhwmVGt0HzYh4zacV-soVTDxKMtJRjMZpHWpnRcjj9B1oU5xgNSXqgHdiX3bbqWbssUpUXZbzojmyqRJB8SKHg_hi3nQZja1Vzan_JQw3cgDL_fpSFncJ3l5CB4UocEftjQrW6PaonJk0nyGktOT48TNpJ41Q1Yq9vjdXohT0o3yXSkUCkZEXwx422vuSY6qB8bbV_0kAgzyQKUrLANsJQL4kzylP2jBxL0qlF-GjCs-YUIWtx2uhofq0nLP4CqajVJZcxrcOg874-l2fILsTRjVcqIdG4I4QHneiDFHfNVRFR7k3g6rW9Gme8eZKMBLuASEG7a_jIrZFz8KjNxI0EC-nhtO8QClIYhDXdVcP1KLOlgZ4bgysbkiqdJT94QPsnfWPxuYWW5doWSalHa9xBEs6OU_NTkQ3T-XF1XpfoJsYGhe9T2MnAp4SY2WmcnAd7PIuIY7QpRmbOYpi4L4YxlO_8uDPYFMZ5_kZBq2cGdLlR4IzjXmI9fz27uc96SJPu1JqB_gyPgPlbPiedtGKK6AsFdo8xPfXDNbfecymO0F11YF0UVTo72Xbu4tmJcQ2Ek6Hd0EfYvhLnCIBGINeETuoOPcdGmcDt0P_zNIUEMEkkGldvzJ5j9IPqZ7koeyH4qDcLPkAM-rewnqL-vZeC1JAOi5XYR450kIORhbLY_T29LW-d7yAd7_UjSs0SFT6KgEjUmmKerLnRIvGSQhgynCfBO2Lxu9lMpkuOQycB9dg7UnUrtNQ_M-aKdmEDmFKbd2-SmngNMm2fdQSSMxDyZLd6GPuK-FtpWcIgenNLAJpZ6ttPf4xTP7lTjvWN-QjtCBZZgI2r4a00WAitEVcSdbR1sC85wnBmNJdBgqlAezCNb4VZZvQWNrd6RAvjgDhG7mfAborXQ_2D5_QcwC90pYcOP2eHQJzWjfcMahAr2DvKgg7-TuM_sNQXH6K9wmncIQHygITUdx7bQnEp12yoklTsozDrrsbWUgbxH-sqAW2nnsDbNS6bSyRzKCpTQKVWTsIeJu_hrOg9ZD9yrwZGUdTb43pGOdssF4B1toPbEBBsU3aVMxUhlLeCVz04qEQKlC4SjFj0lr_SCNkHbDMBXFRlIeUUs_Fxzb5ekp9OsYrXogKid0HOasgvgGSomRSyChlDkrPlrKM9TRPjGrD8Ihb5_OnZZoZJ_WMdR-uu5ZIbNU85PCZrb6LVHV7l39PoMLonbJZjfn9QjdMv8fJc0TxcJ2Dh42giIOEu2Q2gT42k0kbq7_AGLukogKd8QPl7845OAfF2YoPeRSMI07mbefIJyL4L1r1SITOMOSsqNPHd-W2AS1ZPThxQWfHgULH-PAzL8mubzUsSeJTsDL9COOK420ds8GaKaoL9BDYGd8KlQ5Pn5US_aFG_5wNbjDvj3quxIpbHD6F6QSOMaWy3ymKbDpn3bm3LMNjO7myBqRh3pOZSxnJZW7o2PfNmxcNnIDRyItYWtHXUAPy7v-qb25hS0c_H1yWdTrFJ1I6F38AZRYQigvmyddHxhtpsjlXtCvbQiJuz3Gs5tWlgo21m7F6_fd9S6oPmkUM4k05Nqh0NY5HMElBIBtocM334q-JDuWAQPnUv0CGWyN8hmh6u2BSi-wYI8Vun7LKMJyHONfkhUTOa_4ZDY0c_3kOnSA8aPlObVZONt2swM1HPrJIlFO1KOhio3GMp2MDI1pUYYdQbygH-YtlMMH2Q7Hq-jaRSUjMEmpT17itWBmWI29f81kj3jc3aCq0ra7iHULF3gWl5EZ7OOoAFFJF2L6irJkSc4Sq4S3Rqq4v9dVy4sjoxLc9ILlJRAL51AEz16uvZStnHagnc8-k6PplDAUu2r1ueEN2f0-Ks1kbi39a-Tm7zAtRhyJyRPd3VDxlcPeWpVvQpFDNPOnqD2Zz1_n2ozHYfkXSZgn1bk3ZchxoLVwU1_mt1wA_2sbFguBogJNNlHZ_czhZwh_B0tHgTnlQEQhkFs0vHIrkaIQ4P51eFVW_PtROnplptqbcOQhgJ3n5iS1NYwDOGWIbkWyorSWk6SRQcJKSy5-tbiiegZDKuVtKmI9Jgxaaw7oZoOeJfr8l88X2PutP1YsebbZOaRtKX1fR3_Dz61BAyd8cJaw8YZ869U3X7NbYfQA-Q5ZakgGmkdqDCReOngU1XHIvFunqFVEF2N976ovS6x4Tghmy6QOri7nI5rxlc9_bFLTiRR8VO-b4e42Av1x_ZWABkzjMkVFYX4ocVrfOkqo6vSUDWeY3XM4vyAIceZN6kuZ9t5qFb4vdKZEtUnrM0uevRq8IQajGTyWKmczXrw_6M7F6NvoXX_XopE4495__X7lfFs5TzESnUROhReivfWEUGSsHq3YRKcyIKkfUffH-Its37TYrb34Av1g5_9q-qIigs1a6xHLIB8XUUqJllY7Tvd0rY-InhEo-AirX7sS-SMpQHYA96vGFi3jWv_IOhGte70OT8MamIsmHY5vL-ixysEtV4pCjboUO-y2jPLshXUpfbwy3tydtwiPiHuC1PYkPeLXHZmFHhZkhMdPqc2glMB2-Bt66T34QXuJpzBhQw8g0IcaDfg3B5YvQeqTHUziK77o052DkDa0vi0fgKcM_JQ4FtA9Ek3mStsEQ0tlK9cXBJiVzzlyQqLrHA-IKoiU-UzojqKNCV2hQZN-soU4qF-3boabZ6Wq1pSKURPLRvy3cCuS7iCuIya2XmS7DUQhXgnaI73WsaOS14TthMCVefBTAY3P76p5YTyqJNUrKzFOBS6VFLIMkttPPjRo1HQGaDxtJ22rgPY1mA35FFIxuCLK_d3-tWk6cutVoYwwEgy3tmbCDtlebbwsEH8tZSh6Q2EeecWfM_bcyHD0aQrCqsrlQnCYeIEdDQB_F49NDWHN8W9S3TqPouTeZ2K-gKGuK6jiMF4gwJu0KPKO1MS9nZ7SJud8QBoC5xwC4kPOwEokfbVqxitUriK678KZgKBSaDVQWDekY21zktepLRGS0n8YzEPPEhuN_2Ygwf1KxZ9DmCrzEQnsnYlX0EjqPvbs2OrR3Dg9paVU8Cm--iQa_CDiyUo2LWwS7OV2ez0hCGbAV1AM9TrekrcCit8Fl9JY_jMzo-LstHuBXOshNK3P9y011S8UuU20shcaUmlS2R6vtagfCIiICAZJF9LKDBLTQWTeeeyyMQJ14ZM_BbLG5-ymcNeLx6KFn7hLefajaKAKCMQHbQ31f-YpnyxayR6rsKkK5ckCQl0NwnPeHwaYYVJ5ln2VwpqOcht8LymiDs5xR9JbqqrZVEjqtXiBYvmkyDxUJuAGggQ-OnjDBBgRQSRGb8cFZqeArtxItpGqJnZpJr_85BHwcFeaZIHPbJ9IjNqDkLUxMvehiB0eqjWmF2B5v8VBfE5_tl23M-sBqhSDwkc_GQ1WJG9wzSsJQqH_H1Gp0aZ8-9wBQ2mT-AoPvzHX2jDWb02y4Rd-0T-cZ5ofJDMapq_c_crNiC_j7ISJ2bA9aZ2NoRE1UcV89H4x0F4kVFrDYcY_dJmsSG0-YaRo3ti8UmPLMtp_TPDHViZxwYiHd0TlyxcbdSxi36vISxcwNwhMf8ZVMM0JuLYReSQT8LUgB8JHjX_R_7n1wMxlySDLBLNUrYnu_oOnkdUmWG4aTbF_SXloG5-9IqwYy2GLsqForEXkW9Txxc0OC4spKE4MN8d0Kuhkv4OIwEPIjajEfkdMG4z0fs9CD3M5wEPA1TumOCOXxxraue_uuPkaPEznqtWhZHLTXgOfoEB4v4JH4QULPgFfn1xkkYz6nqHZZ0T8SPrJR3uexUi1rJ053lk8FW7-Ipd0MPkWyGta3DykqTSwCE0U3HgdAEdW9HI6nfwZjbTsxLCaIYz4oMoFGKCzar7SEn9RF1RIYGayG5T1Dn0XIeRjENg1F7By2944YIZYa2hEfT-JyEOhNBF4YzwTr5t_5ml71DKSQdI6ZZBi-qcIFYkxG6hc22-lX83jkvlcDX0dx4rVRsPh8lB-wIzqMJ4qL-E2Gu_VD_OGCegI7TQR0hmplUhMWOSJkkPuDKbEcas2e7vf_SiurDEm3-l6OvixrGWXMQ5zK97vDX1VTnRovI6QGiCIPAN0gkB2-eOqpwUyzH7ZvnUP704vZooltGIlusQRQWo-CK_ldv4py--ZyuMm37j1EhzAhsY2poF8z_gou3ogPxDBEysvmnSuc8K4p3pmqdJYq0Kg6RYyNKK9RKDwgnkPf69Lfj3Rje3Jee2PIJ1jyB3bVYfYXqQ813v58vFxkUF0pWudOlftL2FowEPDXGZGzM2cVHa6M7CTEE0F_llzyY7Zzh4Orpf7WD4Qsrl-EW5Isr8kmw7nLEkq3DEzEh7eHPxFfdJnzD8VaiYSiNtPIoseaxBKBra6v6PdIjQOtWazjj2fsk4tVHxWuQtboLV0t0C53PdXFkmSY_VStdtpb7df72CkXotAPzZIp3cSjNMt7SHFK1brOfA5Rn1Thh_PXcsty8Fngj4fwF5QqrmcYfLNNV53dhG2_w2rXVvUrX2qIHkf1vGInQX1eBpSs1lAMX0z_rDlR6yuPvXil0wA1MKFuoX26gw_yf4LFrn4aJ4sp54Xgeccpem2GMUGBtZXKA7CRpc48IvYcPYsnYGV8ZeHbonq3cBmOTJNvcR74Fk4D9sVvhtjeNg7B6HefApjDffi3M4f86MOOZn5goVsDm-AdMTN0Xr_hpscROEoLdXrV3BxwcnC7F1GIEPfP-Mc3HAcn5djcQTjltUaYvKy86ShgT_DdOZkFdyJ5FErE_X_zX8QtRRKCcrdk9h6Kon7uJyWVtXaVAxhaYLi2PtJvGhl8w_LFtSUQVeOy_vyXh7TCdAFYeCHq6dyWfRY2dj1ZY3zYbEYv4XMdlz9TAKjfVkayREorwry3aelri__CMNiO8mJH5_OUX7AxnQCLoOhf-S1ZC2sQoTAIv9lYlichhqHxQx6ue3cR6YA6OdCQamEzeVApHPnnq_74UC8pVV0ULvqsQBbE_tdAU_8yzNU0AJJQhHqlFJjg_Rjxw6S-dK5XRDrKkS47asXnBXCK6lAJ_E_j6u7W7dkvxItW2s-HxtjRSxcXVMAq6vylPLttw0osoFWbQi7W4CxRT_YMdXBftGEBpA65kGFvpeT7DjI4JUi_KmOgl679rnhsj5Lk848ysbHVvl0bIPJ4UNC9IKHmAuFhb7m9yJnw2j112T3TGCYhNPTB8-rplYUdJACa2pBJfGhqGrxXVgIv-RPas4EwfP49D-SyATSWFZnVwRCjb2SLScrJLl7NAdd5uiRjzXTBLLRKkfCYvr8Rd_N97YUxTxC407_JYZt4v0PfBSUpbXcXSb_OdxUpvrqCII-fi8Wt1bBW0ZiSqIOBzciw_Q9YDGPGj5oO49a31CPK7ltoigpAqzjpM-wMEHihGWy5rjYNkQgM3s_Q3P3WVI2iLFWAG8ZQJTplovIqH1efr-hqXfMsca-1Z9hLQZlwWgrEPXkLZbkmfaThcLkiPjNqln7_nxR5byC0K2FY5ZJQYeF59mFknD4c_PurZ6jD6MERIXZ_alUHyMVTYRumkZ8qRJCwD6isJzVG20ZUiHOHe--T72YyUVvI181iWJRVGU4uYtGyvMIjI8Bdpai0rH7fzduHWCcIQJrLmdua5YW-_V0Ti2qNzdNMBgRAvGWd_iItsrTcy3BEkmB-XE25uyvzGEbcTRi2SE_JMylgHo5kqLotLQkUxo7XktNWiykiziK19OTk9lZcHAP-X5ATCHWhPxcqgRO2SlSde4qecPecdgf4LUs_WjeZx1zpjL8yr1bETv5zfHlQQwTqfVxOcEser-DUl7q3AMExd6WksBxLPoB6FAvJ-mGZHya5-HpUEwcX9R6kO4yOk2oFxJhI792g1RefJg9PRWQ1kCSnfYJ5E04manc1JPbNm71GAY5YVv-3y5FNsuHZ8AJHXJFyOC0D2mZwnrMlsZydjp3BNp0QTO-ZYik7r_gmlX0-AuiMgUajoTmFn4kYB04SqcBUeX_mZGIvJgwoXPWR9NNRuJ-rwCFE6PcWKAwh9lQwvc02DE5BN35_aIUX1FAmxrA7eXfuAaBSNsClfFCVyueZnysCvWXgy90z76lscUlAjB52GscgoxPlrWzcw0cF5wh77s2AifHqy-shkPS05F-4S-49P2WbHB9Yx87S426LXr0hwN9EDC8w0nSynBmDR59zZCuHTw_e_w837GvgLLsK0-4mpPpIoREDTWn65MO5WyqeRfKYD-3ssJ21YFMNJWPgoZM9Mzo6JtYfKAKq_GYgC1-pNnrKHq0redXiu3B8kYMSgbpUqpTSiPKgf44dE59UCFnYun3ZGT6QYtCfTad3DyXFuO8twnbyL5_s1WXPYQHuUO6k6CvFJg9UplQXc3v5PNgciD26rWIHImBrmtkTLgrM5MqrKAk3ssZTKbQfS_2CzHsuhmfyaHdUI3pFkRp3nUUW8IOUr99rhGgwHgyfKLeE0doZ3f9waULqgRRL1W-3-Ax4s0NouOngOsJrLHJV6Jj2K6RUYY45vfFeOPphJ_VFb_fFZ6C5yaO_IR-WXxwYBEqbx9-TC48kLuscE44RdIcR1SEXxeZgrtm1FKblFqPt4WI0WVwUw2T3C8kI5jW9trAVeQ5tEnGA3y0tKoqPiNWyGnmQfmUS5RAr9iaWDL6vXKQ-pIPCOPm6zWSKv0Uq67jAUfB5XmrMT130KehzHdeXh2IzzdBHKMHD70jWxxjCG0g7MFsCk1NGd6Vj6G1TwAb_UBxoI8cssIFWlSTFlj56KTdM9MtZ1DWaAD9EUyr6xWjtTSWXgaA_h8PdejxEl7ZKQaMqBbV8_cYtmameNb3ZEt8wp6FKFoRVfJEqwiCtKZZlOyGfnVai7_aXXGiUqK00FCTZ_0n5Qxa8SosIJ8Dx7WLV_QjR-T_RqaUs6BDIm3oB-k-yfyFbkCw2lNGDTe9rjuBCu63VKUEnRmpukH0m2pW3ilkYfB-wDb6OoGS1Go-dfRW-eXaVGNZtnFlv9MzPn1oeQWcyWvUP5_OSvV9-6oprmkC6yFJjMnFjegwzAtdIHKwpzbsyH83BRxQut3pXdY_Z8YIOnoNDOTv4PbWYCYYlZcD8CErmW_-S-brZmfZWvQiF427zLfi-4Qcm4pd630ae3L4WPheJBofSkZoQ3TKcBNFp_moIrpdX0W_g0tMvwrswrIlPAbwzhq-Nde_zpNjYHemUf2O1fDrCMq1byyxDCwzaNJNonKxE2C2AzDumxFZZPqxTwkeqjHKkm8Oxot2TZtyxwYkmQDhORWTn1hIKdv0EfWEA7Ap3bw9Tktzq_-BCxC8CRZPkCSFr-U-Yzd0Uo3zQObAirLIBvTmcij2xC9uiacNo2YGhkR3ds59QLZw4-_ffoA-MmTAPntmgdN7FSgWrcM61WDrK8Z8qwpMlUA4Xa2VErCrV3Mze-JxWrmZjNwUNQ8tEB5uaFBJ4KnWpHTkIDhIFRQohiwyjU7j3Gr9dugTCmn17bwkfJSAbffVulsrxx91zbNsvBkNhSSRxMM_6_G8Ck7p-U8HtrDjzKgCAQkSy6XDFVGVV51oUsDQvV3LGrC4Zg8RHkqcpXyLr2pVAA-kFP1hQ4g4m_CTfHhEZkBGUbg2_YaWk95mbUdrTsfPyUO_7Psh5or79ui7jvAgj5HRynbQwSmaVn4iAVR_wVdVQM_O0b3YDeOCq-DqJfTFrxCBPYpXqaWQJPt5JgLU_SmK6www3mBPUndqktZVbunGF9cvcGqzBKth7ksRCPYg3Uer1DGbNmY9ZnX97l0J1cAeNDrWZ-AzYYB_EEi-uJN-Lpp8y-f6GWuav5_xSDlQdvF7nBuTTfpANjA2AVva_ChNT8h88lvLczTmzXVY-NoQp77coPlly2rsfDrXy8jIKIbJ3ieYNZ-h37DloRboUd75Nv_yI5RTDQnH7cLEegi08EGBhXV6fvW89UNfAeZHsaOy-x7sBHyJmou_BuNn327IDUEWABt91pF_U9afT6ubdajyUyiMjLoFCE0GyOMTEALDtea9KVKk_hhoYkvuUHf62kUmA54Qz7RR05p3mtLoo50NUZ4pzyhsDMIqfO1m7OyHBDcX3O4ECbuIi34lE6r3lYH33Y2OexHhqnzZfkKIWlMrORhdI2TpEDPsI2cGhWsQ-5gZTcnx8SzGm6JzFxGUbILJVrdN9lObA4gZcFQqaeJCKdjgnps7Gk0ykg9X8LZXyt3A1h7xC9APhC8ByiY-RTMUPUpBRfxXoHOmKdzERU-4kreemHZCMo9Hk47gIaQqKHzzXXOE1dmTmC4pZSXAlsKJQY3rlNI0L_BU2EQ02oNJZAaKYQKdX23Uc5hmTSCBmGF15UOVd86Z-jJxzza9lS6hPGVR_uKwWBJ8GC-nZhfwUe6N_MFuKoio9KmFuUAOd9a-8fo-PtFus8p8TZbJoakMChJmdd3mvSbFSxXqR1W32wZdymM-qaGaog4z96_j_6L14pyFbK-mc51b7nfJxcXPYtLEyiY-dqZCRACGjrKgbD-pvaf_A8av1N0v2rZUJMwbwqDIgmNoBvTwnb4HVM-z6VHOsrMqoZMkHYOmx2e9RNI3daxsjX6d5V_mlSoIMIjOa75mYbjLkHnKcYA748C47K4CB7Eu5LjM9E17NPp184tegLmhnN66m9c_5mc3L-CGAsyCfzEXBCdW0-rJVupoBB4j-5AoYaQKM2UVK9QLEztlSXCSnRhuxJOs6XJBoHbpn2ds1mdmqgXk7qqXJUC53LQ884ak566YcfwtykKvsLyv63YaGz-ZCMxnbTVdylmgSJXqr_nh5Stpd_AztDjCGHHSvL20-t0EnKqKiZFuOvF9MEqoD0CJC5L5ydblDxcZGK0mL2CNx6Uv07bvYnmtC7x8Clu7udT8UkMKXPXtGseZdYhkIQjiY3Be7gQDIOFvUGyxKccbi-p9hqviJ6x3cNkgyFmHPEfR_-tzHZvVEvnVmCduDCOiVBfA7DhrGFTuRFzDXHvyDXh7Ie15QFAjKk55StwYYbp6j3JXJB5D9hSnUR3tRAf9y8_PhsUmXhYizJR7pEqCi1ko0zXInl2VIUg2ACxcaQyAaugbqAFbMBokYCuGyUskPiOZ4Yp7HA2cEbqelspJpLG5jnsfzzN3XVPXqGA1teYEPHxIbjS8opofut_7hVqAAv2qQ4wkg9E30HKvWcxSdgdf3oFPaeTKpFpr_exVWlSRb_7Z1MMu5jHqpzNOACCsjkPJToPxwJ_5oEgfvHB0BysyoIhLhWNiyykBBR8TTto3nmRr4NxSAbrkmjo8pxsR1U_d99mPqwg3k2KZo60AXDgpOu5Gsqy_KsiG0On8KX7f4S0q4JrGw9xT5cetYa6ZijdH2iwnZaGz5WTxYVC_6QTIcizoAuUsapJAGtKgPH83gT9lzfvYOytdyMVw4OcfujG28dJTT3kuTMnCO5SYet3AJ7C6QTWoqavFaKm0G4DJKQU7fWiboYTZK2_O5vJX80b2-TM5P_q2eF84l0B5r0fcLgOhRNW3APh5VikGuh0UwYWQsuDzOM6xT-CTPlJ4VsnYTKacoPEYn3iBlzfTcAyI1oG6CrL4vBlpPQDNjXSuNCRLDZT-oDE4qhK3f0GxyMwH9fPtru2AbIgjxzf5V1KPDJedfIOug0u_H-rG7SLblWbNookOuKZMaDX4W7eMnl9htdcecnvhYgBdqVQ0m3cBV85gmyBz_X6mEi2nzvEK-m3NEV9tITnCg45EOofmuMCR74WSdX37F3DZSwDzuDusFqlQOu19pBc205Omp6AJd27gJUMQIX8oPlvSZrGiRS-6z0qX0ZHC1ohBMau8edOw09oP1AOtiixfq-NSqxS3or-qOu1kF644iSVWiDV_2RIv65wy8cGdMTf2getLLX04FVqzpwNov70OqH_CWyMab3nLbJzhhiGhTe_qHLFQLoTWxjkkTYR6V9Os2oRMo9Sk8lfDUbT7UrZAaYCcG07Kr7V9q0K3-D7EMaf6gpdkIUTrHeO9DK7Ws9x7dZLtC_S1xQP8f5x0B5iUWksPS3ETv1qglU2RQ4uE0RAdkQjCf4fzsk5uU3SjBIfmZsSu_gGwvELsNsBZYju96lzsHx5oZv47uVOqcvelQUUWRddFHu0gnCIY9ueTm_tv031C1TWIsqkciEp4IDuIxfOVY7ZkY5DFMLley_p-5o5DCYpLinPiplUGYNI8uZ1mHzMGV-OJv26-L59qtDr6Ptf7JNAZ7NLrXsKWCNm-nw2eAs5rfjZddlaaAHwy3wn6UaMFXAvbW2Jb-gdNDtJIv8MKsOTvjKYxkrBgjtFoUzdHcLP-ryBT7Y3TjK6BECe5rRIbFC1o6B6RoXDqKGu7DSDtdbnikwhxoHQjFCPU8YN648sWlAqhlTQ9cy3LgUA65XBiD1Yss39aJrSNrF-h2N_vpUm3eA69lVOgOqx7UeHmQOhMe6AgfIFeS7MPciUXvgTvpHedfEhlNtTJsTxGr1Eu0Fp9eDbSsAGYZXgG6wQ4RXNkO5USShBSXfMAdPSE5R6GRvDd7QayqDItBI0SoOzrUHNmZrv2k0MFixGZXgO619I872nfuUvd4TEA0944PfcXbKCBEotRnDPpPCSiZRg8F2nQCn2zK9oLtCftokAAbC8L4PJouji2nsKvwC-OHP8RhXgfVm9hqe-Cx2mYJxaBiE1PcM8gxA8lZGJEX869FzZ4rUZYdHItDs8tRly6RIbtL8ArSqpIsFepW5sDPLwqDZiA7mCfmbMQaNsR_VODbowvvbE7bCLNr0tmX_H7953JM0jB0ZHXev1PmTrw4CO-qxpB7MrsoYrBGpKwvBjAIEY1OL8YFhZg0WH-DXBURfAHUXGWPMqhCeuORU2_mm0sJbXjmUY2imzgQIi6sxvl2u37fD7mfU_r7DcM2hJz65Yp9P9FAhT1dN7-lgUeVaicxM68fHzl5nygq66XW1ohe8JqCml1pntl8gvgSVsc-aS4_yqPYOn7vH_Rdq1M2kr6FPauhXsyVx7a3Pjrll0jIoLs4C0Knklr0rENrTTbvk-16FU7S7EK6Qh8AqWPwOE4avnkcN97ENcy6m1iFbMEEBGJEKAHL4-dqFu1FcYoEl9K8Z8y3XHvaHzAYwDA4nGngz9-TV9EPb6t1uGc4g0vsbJxAHM4heBOMCsoVVfNQAsOHM9DMvx46m5LMVqrFKt3s_cLaAyOX-MiEuKOCXfrkJ0KIgUWQtSLel-PRsQ8ou4lFUD1EHe2SuZ9-6NkMf4taDf5QTDI6mglbJLf6Mz6c7x8eMQOM0VT-5UwOYZF6mqdUX2-bHBSXv6PXRrTsxRKzo66XaU2Uu0-T-QNfEhweGleLbR46BNXk6MhC2IlWeDvmySU1NlU6FKoaycDBkK41s1rhCKpzcRzHQjIyXiAW7ynVv_QglVhWDXhZl1ROdan4uvy9lt0eXB-iwavGuyOcT6kODfyp198TEBoGnsBuuiHMibPhLxYETJHkcZi-sFbTbdsG2tw3m65RgNnmzD8V3ZbfaI-64odOVgQ6ADDYsj3VIattyxg4ni2OWpgxSEyPz7hfKANFQ3CMmdX1FwfjXuWZpoI1PHQcLU9B8-lT-9O4wftprhVwm32ESJS8RsC4L8rp5HdDmo054ypiwgkhNBYK4eohE3Yd07elgmrcveMUVpOI3_ftUZOagX6UEGbyt3RymJZ71OEwtSVekrkCY1iqbyR8M4_4Zonz9m5j09SBe99NLxqJrIMfzAjThfidoD_2DzyTE8FeAZYCyg9-xVjAcvQf4dBcHXejCCGHQ7LD_kQG8poRZWurwS3Epq43gfUi_blxl0G1MONmUsEBOyUI-8Q8HJtx0HaNnM8UKnI8GyvwsvkcP1WYqKNa-XDD8Yvdb_PU76UjDOHNT0sAYX3F8TnDtcngjcgLujoaCcyyvvycm2ACnIHgr4qkL0fkX8-aLTxvN33aVVvULeOfB-fX4tk3WAoxPpPAQu7S7GKtpFE4vrJf6xDAywt1kmmlxUcaF0WwOypZ44saRS0siEWnxwPYWImVTMAcirV6CZHh_NiLRphadg7QBMIWMMxnLT7CMTjxo-ptaqR9vcyzynl1TntDSeNBkoUM-0ZEVDvVPrphuc6Pcpg4G3kxmc7Tw_kVWsSIQJR9dbJZTYO9cdfntSAnxt-H1c-rshhNIi-e5FGNcKQIxb_lFwIKiSeDsNv_xr7YebGGOn_uxSxgAZwxCuVd6iFu8KrBbwDJ_oktH2CVl8ykrFWxUWsmjfLW-T3nhHu4Dk5SCAhcaUDR-8O5SxdRssk-zJNzcSTd1JJUOEcaba9fW3OaxPtgWbbBnhMzj80w3qT083IXAiHFW-I87kSvcljo0bld_jkGkcvivQly4z-w2u-N6kWofkbEzG8wCrDKOUItAiUUB-9yNvcCVtBRZ0XaaxBExulGQhwsPETa6LG23Tm4gbPRiQgvvHA8mW5Ra8dKQ-6lAhCB_mLtrcw4OioQLOlMkLNPOQJQKkab67fcq2iDLJL7mMKDUDpEKBOdYlDWa7-NCIC6g55f3H6iuR4jQ9NHHbBAVjRn-060kQ2RBXIkGSGXSv8VcwXcOWL15LWEdNR25Zv3Uj3kf-3eVEiYdGOO2WDXxtKmBAlTzTOKgljWH0sUnkdB2sfC_ZGMbqxOFWrXAXUN4iUnFdJyvp9hlMNIb-cokwIMZh1glqvrDhvwlVOUL-3NaprZ_qCYSiRgZyKJjcLOZ_nukr-9PMRirjdRuQMD9qLjE4DKSSj2Ie2Wc-H3xGrLJDArnKt_b_2ozZtL_pQ0GRh-HosGJX8gZ6pulUsmrSN6CZrjFQpN_UUAzpPJBQziRML-6KoU1iZpaIH4oCp3mFlt-o2qxsV6uAeOR230UX9HScGkRtzgbIdY6Dc3RZkKKzzjfpL4A7sQPPm2sxr1lkwoWypoFv3NYl-pArVfrxCiqohcRN98q528P09j1ug_s8zYYbYZIwpNuvJA3XFARL6I9gf507JCNZzSvvCNpNGX4IUwPfgg2hds_9sT5MZbIH96be5wFAgDs1H7Kk-oBLtRU1MLkeKJ_dGpkjAnBJtwfJcKgl-OboUr7E74ukOsIl0nmCFLs9eZX8BBGRYSVnkNbnxFpwJYNOOE3HuaZ8Q76FE7_c0xQYxk7SDK8s2aD4iWCkH_gz2dHNyCXtlL-Le4kZ4YczODhqml1-o9ccj6qnIiMZPdzuxotk7bofDnMKLoSPZNtzha4_LmZ8UF68NZRwWO-VDaIEnPZxQYRRc2adUEUAG0KhcGb1LaL-_RwaLtFhcA5K7VzgDFFL4lV9_gNo2iZ0em49Gu9Wy8Q9U7r2wa4EZpt3k9PEl7CqvJOwqZwfa3UebXjYxJStCFrAZNUq9j4BB8a3ICiYwTwMwW1jfUpjo9q1jTYD2XW-LOZgg0WK07rZbAELjKWWE1rV4n0BIvUpwUq7c5YhhQ3BjbTROgcEZaf69AyJoeYyT17YcFmdj87LzsQ0vFswcxiez4B2EhAXXppmiyL6WZm1Epep-oTenLGG_t21hV4XjuZzdzNBmKyoVZUp9QXP2d-1u5MIqCWPsfiAHdqMD8zz5RbPIOq2rX2-JkfkZBEGWQT1PPa_rIVu9Ngqy_YF1z8qzfsc3KWUaohUGS4KC1aD-fRM2NXZf7aIQL1-waGXS-gO2l20-XFNZLO3r78L3myqPGa4vxgMoMbMIL0tP7IsPj6w5L6eoPbgLGxsjILqqQe33153qM79IQ9l48WtVHNQfRtW87NEdqkSO9dgO6fDSfF-vSHoQcwFl2U8Z0Mk7ZKb-HgRH-aFmeHrpa2qM-J7k_Q5ew9Z402J6WF7InJaufHX7DfZB2IYVgQQ7hKuHmx5Wj5GRnqxnIMACPtW8GvrgD9ARq3J_xJ8aohpv7MsH6pFtsgxPYhA2wokaW77A72NNVnxtj3C1W_bW5ewLXYGbZfamwXSNidox8BK7pY3LNiVfBJ3iioE2B3V68V2MZ8B5GFMP0ggwM9OfVQP5b97cYpoyxSBAPA-wnqRtftcxNBMJvGzEfa6OT7ZpyL6aMJkEzjcaWBgZiITqcr27dQsz8fbPcVgEsfBeYcOphodf_VndEWmxpEv-c_7WmH4pEC1Iw0QaNlOKwx7Adzq5NzDbLplxlxjB0uG28jRhVPu239tENv_s-2LHqVfyzMiGLtCRv9H1Rw8GJjiNfXeVZrKsQ1CpCxL6znaRx1GR3raf2bSO4Z85ot3CEGR_MP4s86q7PZAMv5us7Q6QFdT06EzDA4wyFG3ok_olaN0ksxJLVKbphBVHRf5Ci6ebe3fZrifJcb06Q4lTO4Aqje-mL6q2Pzg8-R5h3geKIXEfzra5dszM52uYf2mFS-UU9u_sKG_OgJpCP2pz6JLEiuyMfpy384HZMW4uTnrW3XZ3Lr8lSwwcqEI5piuofXZTZgL5ZTsFjH8gVHgNXCDlxT7i6UGEsEumbRbM-xhJvltUKRuGvj57l0rRLbH0qd1DAr2st_0PMEz6LQ6kYGOlOFkkZvRaM3wAoSkgprwHsVGfaAfE8AjejRV1Rcgaa5YFYN23xuOBkgpKslnHHwPYiwCihKxPlxDX9ZnLnRY5bQZJIJiXZfp_bZVBXdXNjzkvEkGltsa8P0DicHKOSYzybGn1Ut0qu9avoHWX6b9CPuMgr-nxrvwcqRF0sG-uTMZ7n_nE-dB2EGJSIZwutyWDkTtDqPphupLJeOvVVXAwx_3wVVn8wI2y_8lg3WnnPNY2VGtnu8A3dDfRmojRygEUD7rl84M7iwh2MIYIJkNpmhUAejd8kkfZB4EVBITdGyagl_XdEoEcHD6KwFKBWn3dsNrvkJaFfLJYJ9dI1PAp251Wbkp9JZ64pTzD9OwRT7m3Y0Ws2N2EVUUL-5yDv6enFqLHYSRzn0zDOaf9NoBFg3s-ZwRpqDXtXqksv5xz7zXSNm7zPoturwelvdpi0bdGuwRv4gY1kTeaGt_TfCn7HdgmYi4n-1zqwL7YhdbwqtxQAPAvY3exd4xyPeJD4DnlXdtNNgW9FnTxNDXmCYxth5A0tan4IVVHbfJShX6PeY7EQDy9wGm2qpabtzsZW5cFw2z9BFXlC1nAupktJVO5yu50nEuejtiDIRAEeBIWTpOynFCnodPZV3lKyQ4EzaE5Z7_z_IB90bYpiGbEONRqs0h5xK5gJ-SJlzvU4Cc98zXUaUvlVN773uEbFmf2yCN92lfA-KV7cfXpYMTD3uwgdc7lhApmO2lzdglpAASGltrXbW758WJY6tMKi56D2iv9lx8WzehHOq7Bv2rv7ksYWQbUr2GqaLv_-0s5YBW7_F4xpEDQv2Qel82Biyl8sZIVC-_cxaMRwMqmX2NuXZDlo_r2tf6h3nIY6N1xvl7rwvO5DbeaDeq9w9yPihhuheXe86Ge8G6CUPz256IVSIH6cvMrRYFRtZGCG3EHNrRYZ7yb4NTf-pob5juGRnyWQ71Z0mQSmiHO17ZoJ_vCqbcOqOsBCRpnvIT_WWffft-Ax-B-wo5H6I3Ifxl-peOyqye4We3_QvTH5kC9N4XRLA_Uff79UP4RTLc9XFsO-Lpo1x_qAK1ryrB7WSRnPF1yMMwM_79NNr2J4qCF3d2_5IpI47XImcHjIjII8JVf5ebyQA6Vl4TlgBlUE_CX4Qx5C5XmoJfDza-u4aXixrCJYMvquPc6MfVjiccmb9r04U4SnRq0fWnZ8wjPKApGK1cugJi-JW-bI3c9E9oXE4Hsrd_BKUu1oTP86cR5RZmsEm3roN1L_80lw2ISW_IcSGDIDqWF4s0Hxk0wwweKXNsvltMQKmnvT4svXbcndhnD-dEhrXYkCPV89GkO8dUC6-ehsX4PknC9Ae9XArkxbgJXxiKyq1mlkM2rQfgtjLgP5iDWjq4fQlXJ8og_BYoJIucv8pyOiaAVV16Lfk11GdegL1yue1601w45DW1zyuFhN-ncAw-d-cPhNaid1xkb1WiTQAfWIREFZzPBO8HGIWHiPCNXzTall3CIgwGTbIOV40B2Cq4vqHHTZPcmvK1MblmFfWp7xDUodJQ5G_IIFVCRxwFs8h1z3WNJzBQafqSs47Vqx583gfCzaIaxS6DbS23IomfNr2ZdsvFEsd3L2Jg-GC9-YOP30QUAWsEkpc6L_HC4R-_yI5-bhN9bkBVCpXRL-CRdCOoBrYISoEdme5x_CG1U5ez2En4AUAkq6Foed6h5OWIoXZ_yxTW_VyYueYkTXK07gloU_kFZpLwDTE89xiY-Q0hjYlvRu9q9KLWshD835iKpv-8sw2yrE2w4= \ No newline at end of file +gAAAAABpdnAEuFDd_KhfRTdEd4TQYcJ3VUqLLSQetUEc3qUd9jk6d6jkfV9A4FYl8MaCHvhT1D0lCUykLvGXC1mF7XsdM0qLKdNZU9vCZvLwKxKJyD1ExUCIME30wyb7asAdlBbd6rHEb5f_dOs-VOZrofC8cmZbjw_hrNhuwmnXpQ1Gl9Di6J-jjWTbcA_0UhHYzS0XZfKd9IA6OkZHlN5fGBG5a6PYWsdFSbJJG-TjlqUAk-Igb-1SWVhOFPEX5IH7k_KVtblcsgtMiK9giF72ZwWeqBguIQh8wLnLOJ0RNcs1XRUr65tTq7iCmni8X7h1vXcxkaqqG8olBTG_f05KpUyKT7ndgjV2FB5XFqd94NwG4Ervjlq6qMuPYMaI0gON6esdRze8J90s4S04EohujpBq9LnR3BvgbP1nFuFbwSavxNqirKliShwCbt2DBeDCNwIPLh1a_Xl2vTomwxcEX-F9Os5wVfBkKCu-tRU2OZlxw5boGq-B0RZOU5gU90ZyoRFE_-9cySGboc5JLM5uT_CE3rmDLYngCBTHvP1oH1AaI5yJVCi2020EQPgcFF_Y5SSQl10tO60afqbhhfPmObH7Jf839ZcoViGAGSUQKHFU1aIXSqNtmBlCpeXMHw4KNDjvRX95ZDJb95CtcrUTVhW98gnB1Vw-iozmbrd5XKxlhcFv_Ge0h4rDkVQXtwKej_4D3T9xC2BQmHEM60NHSLc1As-Qd1t58kzc1H79zKral6ti1JsiUMS6Hl-oYlS9bz8ZTSyoPJ3JP553GxK5-v5YFSChW6xZkP22gH_ETDUDq32kU2Fn_X693UIamLjQrYYjyxrghnMcslVVodv39EkfJ434-GtZB9X80fUKXUDF6cmty2HWWsqy6MWkF7A-G_JdN0JE9URYeLlV2A0qP3eS16wi_DercbXujZTsn6IMzBSAG5efT80LmRWazwCYPgGMYscA0QxuBRcPaDlP3BrWVL7TiX6mBUqyP4Bisy4QrQZTjVDnAYp7KsNjx-WBDkXYL4G3Qni_I7pwI5ENjnx2fBUO24HgGG299Go4g-D9jjZ_-7tkKY8Z8siFGvfEVCNnLcSe8bX4Xh9JfXmaZM-AggqRyqNQ11iRUWF_T0uFECQeliU0D5DYAGmHuIPnfIczoyPtG-de4BD98BYLMrHYJMii3UTZ8io6iscH8ONFJlSoMPuGqbE-9ohoKiiLhemWTysZZc3AC7h_OA9-_WBwToM_NtTtiWGHOowanT2XLLfbECyu5lLHYki6O65ypmdXb8mHpvjeOY1tGNiBVUN_qCt3VGVBTOHRulWjsJztMW7escZg1t-_Nr4Zt2s1n5xczufsTvpQN8QPm4PmbLIZYSpJWQbyMMVUSMU6wbwF3fzf2Ah_O6CiMMeceWK7JelgGhNSvLn6tBgZa_xQaHJO6uVCyGCOeBrrr47xpyVDwgD8KaZgz7AAyrsFFE8_Zeq4lFPl1EAiJoEKd6_l-KrSxni7EmYmf54QLTNIzyK_GR-AvrcxJQm7MGo95urGUxUWFIztEaQ-e6qxJhyZdySf1gMxKcCh6kzBF6VAFSM2oicjPDca0Z6pJhrp1-WXb2AM9EETWOT1woqKSFiTrhFJxMczh01XaiGA1U9WK7Mpe7hl9h2XUB3S5frAEXtC833OMvno0w4EmqChhVpl5fW455Rg53zwtlURfGE2KH3_XrpSwtK4WKhW0NiJjkABx464OSiisC66xoiNEz1SA1BRXerRinwDnnPyRvXU6tHaYm8k9xXENARvdXk3HJP5IGSVbcFomOleBQoLVkUiQF5IO8HFGIB2vjlhg3_aJLKKqBASiLoeMzDDl026cpEZmMC3cSMdeOCC3-wTkljpVZSb-2KsH9-Savgu_Y1CoYxIB1um_Pg7iPcdcvqNKn6hBY1hwHybdCm7-WSsxNlfEDIxa_sZBuXiC035ZxQrBdkijFUM5Dt4MCOR6mRU5VBGguqKZRUUHLzkjFHxlmLtpiRCr6SWrySEGwcgIuN66wXdLQDViTjjn5ZjF61XGXYkG2MvJOQeHE8KNu-3XpZzMqMDCvH0xfEZHdQYGCHjNIyitLE73v5kmpFkWLQSYodoDk99IsCS2DNF_pH8qLLCeWqn2bWZT-vFin96WUdZzcorhxiwmi097VOcSEIUVqVl-b3x1Qn0fhOEJKLEmo7OHlZPbxpWe7hjOoSxQ5zJy98vVbbsDyoVpdmf3GMjjfy2XYRdcMpCnhC12IFFpmODk0jk50-rNls6SQQ0uDC20UFXsnOGkA_TkUc1FvZaMkvONrdmgDVgHBpD5mfWGh5KLC_dsnaGQ4V5GsKgc5b4a6pbozPATr7GTwK7q4g_ml2c8B4b2IZJmm9av07DAIwNdEA3NQqhDZKyd1MLzzeG9l3bR4CAbSflKw96qu2gcX2YKss5r77M23RSEQQDXBK4jR1D2o0BoSOM-Iv5JHNJ3LxbE0vil-pYZEnvvTUbPYRJAuoMQ_jyUHUjD0Wu1bT7YKpo7DItKNgR_OQB-2ixVY3OTeFu7dTJw62HZaaghMWmALqqfyGEzva8OArHtbGJBjLG_BLQ_21YnfMuP6Laujzd32tOw9wh4G0Zy1d9FTzQf7VTuFLoEG71IhEyPtsFNFn5trwgqLk_1NNmSwoEZl_ansKTqLAfILp9Onx8b4Cg0d8vs452mDEkZDhI7pdlKmU4-p2SoeKWpvIQJghu324MpSGCyTQNnT0gQkNtWu9LqOEsoXE_l3YhxP3k7qM6HLDVAnBoMEMZxRijsTTiyGVQwdwpD3DDIhvYnpOySOZcy_VR1_SBMpbmf0C_BNKtrlIfLbvMOMSFjuLBPVcMgVesjDrrhiOOtVrqzPw6HtFDVLvKPjk3O8mGbtuDB2OQijWKpMNF1eeiuKTk9w75aR3iFTkux2RkwrkYTQks_Oa9aZ_ZV3PCpIUb08zoDLqmM0cBFk8cJL-7MTVtp1n_6BILSFs0h65pObdNmUXXuYDXmAsasUByHKOzBtj1sYSdqR_EL5ovQvdk_pzm_sVRqv4T8r8pO-Q4F4POzP5PcJp21XDaoivBXB20_kkYbQlAXxf05uwPTTBad0BK0NPvqal4Y60R3cY4rBLfn9Pe6yxATgm4flDWR70lHrgLpNHPcjbVRgKYeJoP7IDmb17DMTPXTycuoQbfhkml8uILwEAsU_3dCSI5r7PKWw3bIyHbw-UwhJCbEV-u2-g1pLaEmS6l-nAfXkHhavRgwKLnN52dfwE75777__6UKGdjFVC_wNSBLgNnjIuzQuQXh9QXKCexLwvZq3mZrndXq1A2ftv_HRb5-BMju0wjWifuR7Jr_X4al3BHiOGpgCKUrgizm9_yNUX5YHNqlK_y7CzSene8DZEffKjk7350eExGWEDBdv9P0gkzPJfGuXH7wUpQ722KT_ZvcFGX5FYN9Jovl0zEQflPHg7r-QgrrwyvNmBLSZAp03x7sH07meNdIbYcEtaRW31MlOnmDAJCzhBoB7FbDcPgdmOVi8t7tFZ0zuf01qykCy0iTC2Xzib8TCbhiRI7cZXgQyNcTP64WwvMmco5Lt4KpHbSmEu06VX-PIcC4hx6dm8c55W2LObDe5qFGr4t1rFCOWGdPsryAM3jB3qkkKAbRi7qN4OOD2hD5Aw5c-T9EHhxaRLC3W2t3nXpjgNJKbgu6zzjgGDW-E6rSNh_Ao84VG0vqdrk9PP4UHXs1TH_sq_W4E0EJUTv4wKeRtyF7Gn2F3ps218leJZdJwbKRSMFlB-CnFd9k2sCanfWy1q1U3JFpQc53aNQtIUH78RhC4jplnMm7BcGrQljhbZT66rDwxCaT4_meuJ32wterCWuFVZNJowYGprZgcUHkBY9dTVqNuvT4niWozpuT9tUiHIj2GQiOMpn1Eyh2XwnqwI3IPGjTFgUGR9ugbxZR1fDb1E-Hy7yRn9HWSq5LTE7QBvxuS9Xld4jAx7pz5PAvww7fA3KjRg9VJlU9cEYD6JUf8X5Do-GB-BSaucN0HplzMWUXcVuG6xB3jiMMxQWko7CJ63_1ScRFS_qFgRAJj39QT0lHAXBv8xUQWpxAD8EERo7H2QBnKkbPHl_x2lGQR-BYxzT84tpVsi5sdnaFTCuIFZa6T8Rvrb2wyabAeHKytNmlvvkXSYrCQag0Z2d18pegYWHJqI218Kl9N24-H2ylQhsCETfCffcugvzCoam_96tdISw9L01XWKWnixPjjX_qTrEdttfD2oShCk1zK1vYJuABku2Aiyq_O5KDY0CLyt3no3JhKM9nUn8u8JLxkQgRMqdS-qruVvg2MhPh0qMrM9GCWWj1aN-Bofm3fqfJ6fuaVJSQX6wnDUxsEeAqTBmzhszktCqLp-qNVBzwzTDOeOD6UEhL9WARim9-3AifJktNxlDo1hbwIrEIpEZZpZOPGvD3fHchOAwysaNvhBZCD3MYVQN1j4IDZYnf1c6GzZO7ZQiDU6CPq_IwWE9COtqZfQdgTxJC9Yvph9RgVZomT4SJn_bqkTp4HjZ5Nm3NStr7kku_nGfmI74IR-tx9tmkI716TWWQfpuedBnbiFh_AnWEdJApr7Fp1jJuVFce-rcrzwLH6o7TA37VHJfLm7OyCB6b3KsdSmT2uwbZCLojRxKPqFxrQ-kLe5VhOW8WYfFczwDUnyLBd2AW8i5M7dHUHr9P9CZ7zWpv579tZLjF34Xu6NjpOYo0JS39Dm_wTGgUS0k4zbrAJ5J53-JosrxMznDqP27pyho7w1l1_Q6SIclvG-pdLqEniqAfyM0KAkJPS12OLZwDwLlvuE-mDY91BTi-UhAvpNErAdNH1csiVSD7NmAyyCdoafv0J2JktdN3x1CHbx0M0h1ONzjKE3xnJXB_cuvMydiQgWIJIqU63RegxmVxT7U6GT_xOY25vcwTcXSH4JTYSzjLvyp-nhQI-DDxt7b9vinlxy8SxJdOwZxFxWNVB2O6L8l71_o5vlBXQXx2ItkiD3i-rd30cbdUrg3FHSC7B52ln3CDnMuHjoTbNOAFbhB4exrvko_m1nvE8wMpGhohGf0JNQHUCxLSW2C6nm9PTGgJtrefyO3a-vAo_T-lqnChnfN9rO8oxx55C2PaVK4cNiP9BT0yiETfmjWbRC_QlPkCH_z8rW3yHoVtm3oho9URR8hGNrvFNo1EMqZQIUsvVQaCq4wyz_F9aO61s5pxBHHiXGK-c9KNdKIqfgMj0pL2MOx5rMidq07YajurwvCg5RPRLoGYOX9Obhx-9ZGsS_0oHQqTxEASyPorNWNjozkRVQWvKDQFxg8r4NT6i0GduUARcY06lztUMg9h9D7BYRYBOg63JYmaMPlfGBgK1DQU-7Sbm2LFHQKuQoiWbRwBpojThZP2hztbcAekUuxI0a62NEmKHSa8KGBJgGcGtZMCrCKml4WzW5ZTpF8LxBEcrRaAlvvw5eEdbdP2SqTzQNdHVmVNbig6W_PSQa1YRvb1ExRphmDA0H30XbPErLiYiJ96ZyNDwv59ZdTgbBH-Dwp0hE2p7pSQXyqpKZjJPdVMNqeHkcSOS_lY5YW-VIX-4QZnOkI_O4pUtBbkjUqEqet8dVkestlO5yBeGX2quIVoggW79mtwG-JdDSbjdKffn75O7yQGEX2xPculDH-rSKRYSlEmMD4nST82_RhI8FaywTSud44LFTN1mBUtXh38aHzKsxunK2vbQjWUh9_SFAi5wPeax8r-0CdA0XjLDNVBaPfPJqOXrVjw6IWbXuTeI8I8GXuinGvISzGS2ewY6oaocA-Zg1cHHlpPUJpf01R7NAu_zUAwBxZDuvlhUtPJ-w5Jol5IVL7ZtjjaY2VoA_3wV0k19970QpVlSKOj3f6bL4h4yVjJNNWb1seQiIAbZpJcYDhXeerIW7E-KH97UEzMmp7N2zNNsWRpawQ5gVcy624idZUMYQeU6Q3DipJ6dabLf4_UXJFuw5oMPOuzDSzzXFWaE4YA2f_e-FfC16J8Xl0tMkkOLoo1GByFRnl6h7LULsHlSMdEwlYO1w0Z4y44nJToKIyBjh_R2mzJAz9CQdifGKQ-Gp_7Xc8MzfOGerLoyYGlXezG5O2f2OKCzjMnpbGMcMmSOHaYwCcDFEODOm4XD0CD1ErwGo9mk24Us5SV07WFziBZOtbQ6wlm54yjRLXS_4tcQqkIUmddSBIyz8wwQtVH_ZFyg7wfvl6frP7EgxP4UPqV8a5gTNXT1mvUq9cKCWZs-JzHPW1xz-x6ERAFhOq4WEMKIMZbgKro-cqJK9WHMWXHjkPiHFi7szCIYS1qWPgL7L1_wmvhJ-Uuua19wUH7xOxhWi1rJRtiyS3mWyLSt7SdswAH9aebdMYcT_gU2qrlGjk8rTSWKFHPhdlsrzkBzcUhC4OaSoVu2d8IjCuYa1qPOKAXGtmMKT0sMDufnztzEhSjhVz5csfjLm3AoCPO7UsDnDK3JhYbL89p0yYBhl0spK-fL5RGFMRKalblqLSnmK0i9907pVmCpl9KARbXQIta4wlDpCvZsCW4meXizaetwRyOEDPVSTrrvEWnqqfemwd8iEIrmidhd2PklF5-9DWJ3M44Lz7foN5tQHN-y6AKzOcBzxc5hh1Lmx-OwnlEcaJqMa66N2-qTliF9lPRQF4PRDSwQcOEX1NY7Ws3pRsxtRgn__q1BKuNzPoGgW-S7vRsT3p-8Y7mHQJNXisEa47zBQT94tFq4835TBt2wBcfIIecwb816sdWTqSM6g-ZvvESJ2Hryng4ZMBoc_RGxP4O9MmXLCPF_kI5wdw4iZRGdngBH6M5eLzOlV9S-dkZdrbVHrM2ihs7f6DCrX1GfIe8VMeIofthrL5XucnMPA43i8Ije-9E9EHrEKjyelzC1hM807ZOlZIbduFTg_41G5f7InYT0vbjZj7cV0SqRf4nf298LJomxbcoi-v-CiurUFqAWlhACgXPEfP73eIWQC3CY4pM5swP4uJuMergs_x_stRT72Khj0T0Yly2QE83LHeF_G__AI5rahR5UXNLxKk2vTfDjIbpIypeucq3IeITwenD5ELe2nqBLcAQwHOE-jpCtwS5sw673nhL02KTLAJrnC-uOBJLWdoF39wVX2-8yU6qP3lVnfU8czfGztXog0DIYCRTizfdaIBjlsDREsGXDlgq305427lhvqQibBVa5FVhc0YyE8THnR393PjBd2701CXv8wlvJmCO6nLHojH7wv5ykEG51n27WB5hjA-6ut1mWtdZvBb9nRtxbFxcXQnMLTqzULqKNA_jb01pFQ5T5NCaphREdVJcKtsGYfX2qi3xFzdxj7MnyduH0PTSDoH0H4VkOY_vHct93SVOE7gCYfgcb6HkrxlRFIe99ALBZNHMP4MZTayP291w673nmBfOXJefJbUvrRniJ2O_nIbX5kT-_XQUL8WVcRGc5CCEJOI0H584hU32V_RV6doQIM9rWj_6zMOtZih_kBnIU1ayY7rtSxBLtLaQiV_GaeEBCXg3_h9E5InEUehWF1FdJ0npm5mYS4W3jNk1SngnP7GvDW5RTEuC-wtY3iA_oSncRxJyrCUmPpvHEj2NSmn_kQsSvmEm5An_NTCGGXMlcBky4T-1W6rrtTDM6pSvQTZcWxtgEUFA5gZihf1-kRW4n30m9LfadPX5vX2uxd4Z8y4ZyHNaBO-ePJ6uhP2GdpANkRqb-RvlwMiG9_OwJoIF1nn4cuoydBsSzTpATqFP9w8Hsd_xRwCexbTpaMAI2FoBJLEnlkcqRZEF79bOFUk1EUAas1GYYhTBiCD0AdKfK_Dq1tn6WgvO6b636HC_pTtYeEA6EZd1qAQJOPBG_Xk6jh201abovU0UrSwWmdoR9dDhohJZCcob-c8c1Vidfhneckzxc7b1a3CEvtJc5mSmHZcvFpG7L_KGKcFlgMv-6JRqnjKkm19XqsCbAicQ9mcq7Z9__rx7cNErYusL_tURV5_IFeU1_gMXfo10WA-Lnp_ZS_BjxlXgwbQ1FloAbNuwTW2yc0q5YJifu0wWCiA_AjFX8Vw7idKSSdYQGBKyXwUKeyuuU1clF2h18ux_Q2dclAkDxZiTRq0IK5zgFGgDMx60OwVskpp6mSQugZVBaKg10obTUdqTJsLnCrA3j3_6FJ1Q10wizLvAJ4UjrKRHafz6oDZIhqUPwT3mebrEX2_xvd4ctu3D2lZnwuknfnEIu24dWxOF22NKT-twuTtWvWotwxvqB6ep8GXRMvMOKUHMZbaeVXpIrfh2FmRKWVhVgI8NyRZuOPDFJMc_Vgnmy-xLeO0ajKLhD_2F72FDQ9RLDdKDGgmuH1rXSe5Hto_6zg_6Kj5Rk2QrSRA0J2a2izL-YwUg2DT8HQcCopvdtDqKtcM-61DraU-vYUEzNBMPRsGoNvpWSMaaWK6Uz8olrcDlcpaRQqsLfTjH2-QMerTm9VXufeWZTuTxYSK7No-t8UNUnbg0zl1vB9AoMiWcOQHfM8OKymdByGFm331Di1xddKNVsNtME1hvJC_PLGMMlcULWnTdkDX5EwkOxl4Q1MqEmUFhFrR_z6P5TKrAGaWLjUlqqGFjYjxDykOqpC9CmO-DtvteYtnjH51KZWG13xnfoYwcl93aF8uBgLbI3MZ3P1sas17FiXpT7iRKKgrQdqNNBrwKKayR0W_8xlUbWj9BS_wpAY4duHAG9HXkaHW33SJ88wQ9C8o_8kytvDHRoDgb5DS79VMVjhGMltjIurf7t2c_8Qle6v6gI_w0h6_M2xT9pUAVCJLsdu5sKX1SaXtEmxgM66avfCGLaPyOsr8VzoOvqmlnfD5d9yK2ydBUALLs5zsBTLjwqvUgm6yGSZ0VxwuxCdb9x-kiiEJdhiZeekwJOXOePLO4XW6QA11OZtee4Nq0tqm3cbLHGJvMJWCz9dOUCrne50yCz6TeUDIPCelJ_MQu4PD3yWqGfh1UdBy67XrT2WgiIQ8kwqGrrlUp5Z0ybknrTo_utZnLguAi-9BcVjSqMrH_pDOS0QbV11YnHbi3Jdb68FrtBHHKpK_6hgvxNYg4fLF9dF_Z1G40UOXvOcK9vBhN52irtMF3gn6sEaKX26-uWT9TSO99CXSWhscgzmj2rQQXJo1kkJfuEyYJ4gLylSdczb738dcEb3qY0DXSFTyn5CVRenVC5PtPaoo0awcxnrKd7BfJR5x3N4Pc4qyXrOqIQh1saDhpfGjPkWnSlaUv941V7x6Po66F8xQRYBQWhktzTBOPO4YYjzc9w-ZvO0tb8lrSJllDsa4rmBMizqTplK-63IbZoPsuPMpXxKbi_v238AwujF32HJfYm6mSqBgCDCXMzaImD8OsJv9kxfS_ITr0krysJkVpRIqu5_Q1uinwLdC0R_ysrgcFzpSn_eLhFpRkLL-yZJvg4KADb3ht-mc7rQPOfRMrTalUWoVke6aSfoJ8S9aH4suviHN6R5klXSPCooTG7IEzrNSZdPXnUNiLxQ00n1g1DQ4JG36f465MRLLuKlPE93nFPILSVkyQdWHDqJIrU2wLYYvfYH9M5DpQutRAyZFVgNrneOrvGpDbGIPB5Dalqp8NeuFsLe_8lToo_AaONvU_GFBtteevAc4Jy_Z9nGKt9QiE8zP4heoaMUm528NhA01RXoDIe7OXk2Ca34kSBHDDDcVgy3X0l1hZqStYg3PoQG7B5sMLfon9DHiAKZQ3ucA3Z4lZrkYYFh6V1Rz3BR-TY_D1eU1-mz4yLFOXys3N2-zLakETwd8M5c0g2dzPE6zyRG_WR7WgNCw8RDYULQNh9-NWffCkEgqtmtNyS8neD5F-CGnfGZTVriCBXrTGI07i6tjtLta9xAsLCXofLHkbuAJXoyTU8fKitEueODyXjeXZIbj_0iRy7bkEHUQbJJHAiijOAzzeFmB-0hZ2vTHmK8ZbgRbWna2Bft3jpjVMC0qI4klYxZIZ_BKxDdMh7dnbm_yniGf0WbSUGyzS71IzHBdeGlKUVidMRoJ9n3-GPAnhRugxgjnketD-Yw0mDkLObJQKkKBoH5T_addvgxRxF5-RKVWBOoBMELXnD4UOiYYtBc89UW_Inq4axw_Rfg22kyTaNK0UO_kzUeCFvz4T393K7UoFlhQ40jirrPqHcMWyhggRi6oxzT7CDbqsrpVuWL5WOuJJHZdpVE-o7ZrxNGYUliH4l_8uRwgrJDt1wXrmrG2mi_FShVBSHfa75vofZ_WGJfX199sU2rKf0Q7Yq8TIx_0KwKJMp0JDsObCmjx1syDRQMzmg3h10fd34EmKDpKFxxEx6CQBjC9FB3Z20f5Gvtn9LWkqqDAx6JSJ9o3BRyyg6GORb23svTfLUSbkcPADZMLPdlyiWPFLPg-jCY7zVC1OCrsO8KyXlJ4RoSL4a5BYy6yu3m9Og6ATay35X8PcOmfw9MR86fL95almJ8bUehnvKWFHoBwlGU8k-bK47uJLUqmV3ri5iCP3_hb8D3JvWnASAypgsf9Ox_adVJD0xE6hxncodPTZz4jqykgVsDS2sle7lf3jc9DqJsgn1_nD0ygLSQt3yLLiTIShfkIeNKKznOdApNkmmnDOI0TwY2z7FKyLKdFDhnFzn-nVqB17iTA0cnDXwZRwgDxdwIVh2PNi8c7DSXEReOdAjAAmXF_3NPXycKcj6csG0uPDtxCY88SCOmUDFwtmJQUsZQ-7WhAumrJzkB1Su3pFfTpYsyFdPc72PbJ7i0S_oqzBm5XsoUV9w39f5fWgXnUGcCTMLyx31MlP-M2EjiaGmH1PzBzIjIbUvG_c3Y1HF2j23yM08OefCnQtEQ3FUOi8FZJceSJ-Ca9vR5d0l9YI5JJiZ1AKOsBZCh_VuHLraXBAXo43WYg2xJjoARTl0X7iztyYXeKt6PGDEVhyZyQLlqYSy9fC61TXd97ga3DKOdIMIi8-HD_NDSBfbZsKVn-6_S8FLb5WLaHBfg4Oq2nknhv50ZAm5DeJxx7N_mhRtZrWdwx-fgpeBC0wgA3oFQcZLeh5a4qH2SLxqUDi0knJhgdo8UfoH5t1HwlmG0KNjbdR2AbgNmiGXC3nXMSs22wh2XwLayLvg32A8dm73DjYws4zqu36r1rPAbq9ouD7UAbBi3uEgdlr1ofghUDfdPOMdu_HnB3T9ulDJfu1oEGPpPRnIPrnB7xZwgYFTLB1S3TMsrKEuNtBwpAvGHQ2uSS-Mp8jSFTOQKyEZWQ8Z6uxY8-WfeM-e-u0aXEL_ip-ugIzbBMn275k9C24u6-cN-hd7sb9YnoCMylw_o4O_0cgcU8599n39SpEZmmPTCKfjrjknnVSbWefo9BhROafdfo2UIzSSkk4pqQstNAzgsTLSTFhJpo8o5YdGDDazOva4Iabbu8LxXY1fGAwPLOEHh5nh6JYq20HTiBE8M9nkOcsyCeelAVlszYrcitDhE_Y2XdGC4EemqUAbDvfPGBf3V7j4gOHeChRrcmYWmEDpoL9sFs16fT-dNC6kJsdTDUzXGwdAqv8ACzl6BV3waaTDh8g6_RhPKamr-hqgpbFggvCgx0E3YleDgHKLK8qnFpVVyCctyoZL64jAdiK15-uL4PXptNRdTfleY-zfVnnB5tbpT3OcXLbFk7yI9jctN3bnrr5nlqnt7Nn9a7zxhFbDcYLml5QDIPmxMpPtc1hClB6kY90yPd6B4IS4B_nJWuel8l0QydFrJFpXHU_vMLmQ87vPpenq5wftKJSx-GMhLJIkaf2sAenRxaLQ-ZAAwYxSYHQ2vZsBULlGSNG1QU_48LqSoxGY0v51MSodmt9GwnHQ2vSuq50RoulXjEPkdWtWUbjNYeKK0cqdnxFsX0hUF8PTiGa50h895tiyGR8XKSCpGOzithmzqTXdfMztxtV1irMOHeUPi2YAELfC3_E1LwveyWexs9c8b-pz8OmWdUBNgOsQPn_9QXduyS8asKLjGRsHNOZnZV7w7ayNXiOhZIC-oORt3-wJxjNJSZYONtbxGqYhm1PVbBDgBt220AoFqhH3ZbIx96me7zAEe1I-yRISvabt8gw15PQsgFwE_zZ4Hxv40bmfXTJE_pT2xJwJpjlLuuofVdd-4uOdzTLPoxuYzPb415tDZ_2WjyCUrJh4WJnB9_e1KxYRNMxZix-AFdSuTNGNMFJUQ309ke_-OqELkgBasoKtyC4w4l-S4zZr7IOiEQu6oCc0c88Htt9Ixt91NeUpFoN-9CT5tib7Rn-bLTHzAUdfgxU26WV2QQiL1bvXLc9svMEBZFM2dLSIi8ncBdi-VSutU10iIa4wVWxh1_aGyj4onMp_w6NKxY7NIPEujU0Zb7xWeKui8ptQzxg6BQbGZ92Is1MXur_kvbawse4ONNmk8Px3MZMjczpp-O2wEvZwhnL5dcjT6fGWRA2cYBqPmecB4urugl04fXAEc_KCLPiytXvCNXFsD8PR8Xct2Sy_u15_iLOvR0X3Q1UiTY-4a9LU2g9zsWy4oixi6bN9KvTtu9uw5SiQhI1f-HFCxpvlyNCUfHgVlLWfrcwJa-LSmhx3_Wij7tXUi8XFcL43va9EqGpyYwzn5reOYipjAL885bX4bPxorDNpdFnz57BO1mAdrfgDtVxTFjYKe91MR1y64J3c6w8YL0jYxF9VSxnL6yp2oYVWp5B9W6bEMisQrYiv10DcPSv4rf44FVrLTVBgDZ8cPsi8oaRomIRicsNtwtUs-lnQ7q2JrQY5x3IvSoGPjbPWbB37AWCqgH0fkNKnYvklDfD6EG8q-3gNUjKim53KBGpMzV8ED-qBP0NpgCv4NuLGOU3GscrdLL_p5xGl9vFaF21ZqwG442ASG-pRfXUZ2Puj-JTtQGSQ1wn8k-rNFadzzUR5et1ARel586laTBGtuEtrB_wkChfyubfHt--eCXxcUvB6VWfkt1kcR0jpCF0f8WscgUax6Eocad2bbydRWww6rukfuwNfGHsXRc9DuX-mkQvG1fpx5ZsifqaIs028QrINJCTE_71BT0s-5qd_dcMFPn2ykuwfThEOdQOYvX0eI7ruXLgXu_MYOcd-u6ACuV06HUqgxuAkuct1FYWfEasf-4AUmey45gXX6J9AkuPB1NzdsRtY5TdAYLQRAD0i4jDYWzGFv_wTOd-_Xh3_NonuUTWYbwLASjsCVQrRPvAM5APWw8c3mR99_oETtfvlF8O1gi48Hdyt9QPjLfgxVwxl4UzbPIPigj_cWLn1zrlyj6DlWuRx0V7oy-L6ZW15l7ePMye1BWKAGAmkeiChZ0Hiw4_WDR4WgoGq_JsbA-vLkDPbLCeDGjel7yStFSzTeCjnSzBmTe3mw8O-XeqjTAPPFhCDT_2UIL1RceZWggLA1usgCwrEKoOH4zzR84nz8ts6IMRthX6wrdrj3jWmRMRW7H-UicvKKI8t_wRMXimTQ63mwVEbsy-rkLE3yE3efHVho7ow1zk_IyKrp_UbiBd_B9xAu_mhjUOsa0g087rwmnWnPffokGEMGxsdvg4yiwy8HG4-8e6veps97jPiwoHmonsL2VJWC_EDU3CyfSsO5Vo3RLm3bEa2F0wRAEtV9UlYjgL1pj4z8hXE3mlAYuTlnAZLEdqo2lRVyKC6EMCEltgzPYbRbKl2gYV0dUVYTHbZrb5U0Icx8HJSUiHu80pBCXtOWlG7Fmecs7Q7jFkA0eoYMsNLDLorOWr-0ImoVyiudyFvuF-iyIhdy6Yon3SX1B55yL3GWuu_a4URAfDE0ZtGd_Nky42tL7am3wjbq2r54YbZBqrpKmRlDXMI2_OKwT8ILKGQo2yvQYK9yFBiwx0FQ7NUmXIGZT_mUgwYJcuL2T4VUuBkdgzpgA7nKseEcWsr_3AJQWoQXWO4b7NM4BRzfgzTO9AiWwwIzX1qZcN0QWDngT9Ohauekr2WhRVMgwkkGSi7BBEOUXtH4Hu94BV3Ra_UiMHPLkv-Np1dtx2TRSpdS4C4J82LAdoa3LYgq3eaNlscjVRhlZIF6vmGGvskQEHFqOOU192D_L9sw_dCHLhcAadvs3fmiJ1DcCRWO0FPcFomak_PWXcJgDStLuc8-_0WDruRRmp9YskiQRPEM0M-7kZrCWjbWVdrbkAPl6UXIlZbqvslTgGkLo1O8XC5TJJY9XtJTuvcQOLw28M2umb5r65r3g81PBxJveaRJJty8E9wBNKcwwAzOx7VWmcg6MFuaPx0A6bqS1YF6WytyFb15fiortlCZrzDlvcsyz7t6GOTzGYXKdKgi41drJFaNhoHAGlMQUBdwzQPEj4-fob9AcuXDYpKqSZ7Vtw_nljj2XpIds6XtSPCUXZ7bzBQd_ycJ5UAl3YvEenoRIbtlxUChDIK2B_q-lb_y_jcb1b26o8Qtfau0vxCm-13uZ0nNwMGWM_JjM-tU5U-_97RSTRjlqXu616xvZZbTZhk_MCug1hByMPXIqIoUWmepSkJuFRf6xNko1IZRxRRigxK6bhna69I7K6AkRAUAQ504ttJVqVDt86L-1fwlWmlLlIBPLaYOLcBzm_MJLxt-fdTjwucbxU2oh2ltc3qk6f8_ZW0lViOgXg8YPRZOCjj5wlfe2zW1GSfM6T2iNwmOfpGhXzsZmFqqBc5lpl7Tg198imKCuc1YQFFnliXDurl_rEZNGUiJMS8zcdJyr7p7ya0NFdKEAXU2g5_tYN7SAEwy-Evj4l0Xxzf9Kamjpdp_jm0i8vY93lVTbG0AJohCTR_ZMUw1titTsiK3fKFXOa0Z78dTPzwACQO1X21eUdQv0WZhoioQckpYvWslSEJyzBvAfi7t24X_ERHOzizI6_L_-GKnOnA06zTuWdTBEjs6YyAc1z2RxJnBfRvk84YUD7C_kkQudxHQLcpeZFRfXzR3s6-dwkTOHnMMBDN2RXxXQRsPu1tbaJEWiZo_7sYkMbQr76X4y5kJOZkjQxAV_s3bhjF2IyIBbZeN7dE-inzuYe7nQAlDszfrHnuvsLOWK-uvHG-GJvwE_JZF7EJyuhJsy2V7FBJiKE9ztbu2nzzSmy2Kh9bnC0_nBMg1ZqyFZWZYyllCIANRaw8ASmDWeBegVxwk0OT0qihdbkR03QE1EoFNFEcLM7RXrS4IGNVHxNSzXluhN3UqPIKbnOY-oSZEQKXq9bXXP5tvQVvzyWtG2iEzDOAJestZCImuu4FJiIvc0Z9JIONQmOVV9z4m0aonBuUulAcsMUSg-8ys6qOw4RKA906PsIgG57S3Lf6oP4synCf0SRZ7hGZjw2YnOOUPah5spoPEmHYw7NfagaCcV1L9Ib3zCega9b0uxkL939Ou1TSlFl0Jb_Kju9AUVkJNuMMVI0sSs7YYWX16rwK2SVORz1FXMU3v1mhxN6vPYapWz6KJmGupKisnKqfclcT7VFq_Cu3BTIEoep0eSgvcolHlv95ooI9cdmD4STE3GU8ZzPklitgZLVLam2j90uWky7ymZAxJJ6VoAoOxmwWHyAcyVHoptVwIW-_GYnbyeuqMy13Q6ra9MhINS7WQ4RabLlZycaTTELTDMOVGM0kvLIFO52Nz7771zy6pfA99xd0E0q2kREn5itXlrue0oq53ds31Lg4RjgynpYwRMilhQ9iSk7taLJLuOseo4Eafc8NGyj65Z6sVLlckgrCVaUv3qB2tXd7fVTBIL2w6qtZCaB1arKlFZkpDnJytairPS65bW0hH8Agr0F_h71POd7rYCj1p3wseU7TmmX2ag7ke21zdtx-Lm4mIkYDICjqSKVfF2DYEpkzmx0dY9YpZr5eNRbieuhLTW_QBMKMl7-4jb6l8wa-xzaJpEikxMoJ7aV3hKBZO4gWsiQQbvY1lBgJqqgyVkLSt-PN21ShTDHAxhxFM-neC9uEW9d2VtDqwalci6fcs9mGBDt5ojHitKtOHlhbzEULDtL8BXKbnLzY0tk3MlWVF3W7PMWkBXudxGqdZ86PMAPBm7nV2_ZpGJuYBLEaCUQVIBhcN8eI934UdPQrshlkJTLVF5WJS5nf0UAaOEovLObpqgM4dNlxou32QMKcCPO7WKRYnzQINHCrJoyymFmdMD3r-ZcCac14VHehBmXvX2COFw5792LNsoYA_zejg5zOGJuO7nZp2yzELxa2pvGr09nN1N_K5R3B8XTUG8lCT22Vp2VGxadM18frSNzatreYNd9Oq64LUClc4VYj34A6FV2I8Sz-jnoX0lV0UzP0lp3imVDlcTC-pFzZok2pq4hLQ6gSh9Qa6-iePxMdFsVt7c5TfoHoHj7l9bRe4stnEdUnBtBR7PeSJH0iJHjlvmh7WFZ79tBkEM2OaByHQ7EiY09D7OEQUSuHkX04AfGzcaZCcncWoIfUuox8XSoIBc26s4y7WRo4ew-kqFD3iKeze00U022-PTJY93EG19Rh9N-MVsr9Va0A5pGtyoA_O3Mm1cVXQTW6aF9Ro86o1p5FcIH2EfiswCLOJW6vOc3sQXnF4mX4PzVpFcoOpctfudinTbMY4Lc7pbB-1QJRgUixWe3SiW7MXmlrFBLUFaQWXHkYfjTonIdH2HTu_MPOgnuSBx2cf86x0-PYggnY0BY3NMFFD66X7OmKQJ93lEN2Q__lJhEsibY7BG93e-9pNmkjCaP9noQQwWAD7bspHrcMNwTzwHObZJMcJaqZJ-3XdvG9mjDZWsgAkMtQMCr63FtHE28OQim0frf7fPJSIjKh11KRgwwQX8gpCv-QvR5RSjra7iJB1HOI-EbK4hAbkckGcJtzpnT-mS5mTAeIxj6IsN3XG0x28ZnCVF1jiQ5CckgEuthsESfWRM8qilsDWlCB5vBROIVf3UrTulfJqWG0NTjV9i7zBdxtr8WsmvfJDgTxBHg73Zguo5r_BE9yzleF1Ta-OVRzL7aWkuEeJFUcrHOH61fFhX90gAyT9u_foffT9q7cCnr2KmdUWeNAgCYp7busr2cgcP4DoeD7EQ2XXCeekE1W2GSzuK32vdRHd7Hb80oyC4RNJ0oSKGNr5RVWROwku7dfjwweDrFqwdtHHhh7c0KJNwfVMeTnneLRaozlt9tF16d-kCNL3bEphVZkQx5O2rnCCdJiOLwA894PHEjF019SAQFlzkP7KEWzfmsrNdSTNLkQXwwTx389drCWN4i7PNOdpw9Agq7mkbmccRRc2T3HfuGCarh9WLhghpFiOXzExZ5V-zZWdO5S-qniLphXhH5WVHQp8a9axs7MvkH7SAkP5zFkKiMA-r2iHcX1Igqj6e5Mn1jkvbPvyifLasda4URPjHJaB9vgBvXGRzg3bPQZFgBbzox0mqfu347pcW2OH6-s4XJDBmlBorw_qb2Btl132J7Kap6z5k9mWJFraVoeX7H8LRtdiRKOl3qxy6QVn9C6JLAETpl9mnw9nQW_XRG1oOfBKFoOOxa-F7W4zKDB6RSqJGbIN9PzI_IFQVm1jd6ItzOIeCYnl96dtNSWWGlEvhBxMLf37VLKJEilK4xKGFZj9_M9Vb_EPIVv5BhwD7J1xo0voFN-d69yr91Qb6TbxFl2qVdcErOlzrG162c9SD89ZMr1JoUV2Qm_HeKKTGmicmHSGRpuATFydc8WzS69x_e3jlcXMryogkoxyR4WIuT_sZ9UKj74FcHndn-DXLBge3KcS6WT9yR_ZDpO3tr7IOlfb3IgvN5i_WHzsoFpgN4hui-1R7eRPk1izCrPNSYheAHXlULKDJoZAYlUjlE85qpvJGQXUcZV6LwW13fGx14diNEB3c7NlMNDAi48CeD0g6PErNRbs-O6U-xvB7IkIl13rWuBCMMjFVz0cfQ5K3WIJzGalv90sstek-qMJbdJeZimRCTJAhNCjrtQZPBa7-_l2xJ0tqHF7_GpoRAAPDmjfsuMKkUNEavED6thiAmuU7oq-N9SaBa5BC_pzylpQHAA-AF9ZC4oOAPKvLH7kuGE7Tr9lHypxfcpv_o0opDU6Oab1HMalx3ZU9LP4tmk4OnajERY_o0jphou_4ubl7badCMv1FcUTJVDgycKH-d7dI9nIBQDFi3JUJ50lUGC_ut7-5z5exXqEKeNBmXfueeh35kNmgMEtq4ClI0-dPiBaAVFp-ZeYPVoIUpZCeAfpc8UFzaCA3TKpVYz1pn0EwbqVsrZAwH_x4yHkSxixOTukei33FJJgV39kNuDxhSdKyeJ9nK_Zyr8bjc57pNZs0Ae1jgAvp4ssSNFyqtXGlXxKC_DFRoLyt3KRVlnxvC1DcXmJ_fOFXa0UvgbHrvIZD4pWBguM153n5Zn9ahdd9BAqE_NaWVKPugbWFRa33k7YX6-Iw-VHr7EeE5ziKgqwcPtdEBqqBZjjpJVQXtuT_Qfm63w1Jsdh2WneNjrwtpWmgUaPxOT1KXGvUzlAIkBE3sEih_ygemwYv54Z8HfePoq-W-dBIOYWWn0PtVFyUq739qbY_e1EU146ZDjDqts-dxheeG9DqqQUMuimFwmpQovqX6PtjfzXjoOQJgyO6G-AGEIByAbZaKv-DAXRtuNaTgEY1vcK-A58RvMrTIpb-UalLAU_aCCoseUANQMVUvknxHjj4sy8j1k6u9GHnKYV48Nk2RUbhKyPUmKOs3EVVOokV19fkwlfm2WEn61H6mnN-OxAyiFPCTr16qMX2n5a_iy9Gfg3sIzXXKNdOF7k-D0vt0Pgf0s48h3iGgqPoe9yZk1kjM_YDM-O-1nLIjsDuMjR_J8ndYieLjWdEQY2CFIlQO7f4Fls_8srRx8bypOWQAteHuDGWyua80qtsN9PcVJZabkPs8a3-r-EgxI6pDlWbgj-JKqw0pcxQErwQO2T4-q9y8fDsdDzSBCXqfT9-RyZQyKf-TSpzmyrgDcZpIN2ONlAuXuFTZcPobseQaRFZS-CCJWDuQBIj9pVCohabRLCAqt_WDpRLCJ_vsWNsDuHeOZ44NDQwvjrxSDhQHfvEX3VkPrHG79fgiJUy1i3w68rb_DlVvzG4SifcOIVt2tTX8bbq66q_84yabG6D-Ydm-qFlT7knYe5ZdYd2VyHTjSehYCVVUNBTKY8ArWwVJQL26oCGo5rXmwst720N5aUqnqsFGRTFyLRPnwrIweqbRoS56KaD5eT5I5Hrd7j-_Dy78b-h-q0U-xb_25s3JT_7PRN7dSAarCEBebleWwo8dlwQX0so0_ezxmOuzFi-oo5GXdzwD33pKIZTB-TULh5aTqoac6-UcaxXLcu4hS6OexkMzAEy0AIMWsRdiqLOsgUWZ_a4zgiMV9vMgMig5LXfmbGTi-WtBPlWAXr1GdEsYdCg2igZgjklN59Z9PJItI6ZcSTHtyzDjuLAN4IZDM8PieRDeGRAcAFBb-CXAbmY_JuKCJHkwRk3zx8vc24Y7hCUBLknN2krSNKUWk5wQh3N-EoTpcqBrkzw8pj8wW4IhGNHtNXDmibxQrbKNJcCIWsbZ6EQnnxmOLbVyloFx54ew3AY1lTMnhajxNR_bsHXSg9NE2rE20xL35mLd3Q9ZnIzp2BD3ba7tiJcMGtUIUnzb2i_7Iq4v4nU49EnzF60gMv0hQu4138sbYayOe6qJj-IWiadU3e93Y-SKQfxXoljOJRQDEfaIVzxGM78uriRP7FWB5oCNzpQJhy4ZnwpFuVP6bT6KrGV8JRDaQQoUyavF_Xj8HjVakTZHtoY7Hn5Arc0TyLw4vkB_NLMvQo7zJc0BxaCDVpcPgYGCPAQqvbGWI0V8Mr-nMq9cUroslCJCZQWutxgbEKn0fTT-JcCWnC7BmvYiNaNAhojyC6vtsvDHX8EjlaJeHlNjCZCDQB38T4TY9D3NcNlYF4Qcu9RXFBaTRSYGV6bgUwYY8gu2_xlsXLEKb38qiBm56SZOQl3ywF4XvEdrL2bUKQrdK3P2aT5JDVvttBSIleP7XV24MIGRNJ5WQRpA_DyzNckV8EVlG6biOKqGODnBKh9HYlBrNyV7B_QWb2TZPgFZBGAMG-NYg0PiGjM52lkJyrdd9gYxDFosyw1_vDm04wG2lAzRE4qEVx27YUbeUVElki2gsDhrXhaXoZU4rHxAjItIYqtw1SK0L5gGgDdDtZ_4A-Chx8HTxj3OW471t0R82wfC4D19Th5XK4WwAUFMoJCLnqsm3HpNIkZYBR3SSwXu9iG59splr5pdodKo5l-f2UdkZUFICNKoS1jS7OCfzMeVZobFpwDsXczNAFVVf5CatJKzcCjnGfyzodDwGJXxwgVo-yPpPi9FK4GJgAW_fJ7JmAsHNxAyhX9tnsffnUT17LcWjKYlnXRZBuIaPVkuvQTgDEwB4Kf_aOySkgkEzfbEzn3tPZqS44pcAUHjQLCVVSEqw1igBEi3LMABzdstq6nK2AqJvv3i2TO1TodI55xxNfo-vU3_qpbC28N71Lhv0ZRXPy3vY8WFkRtSYR22JsvIUG1ViFi9LK8j7bvDsdACa4zq5rQhyk9PMJ41kE_MOgZEUd_XRsxJrfth7TgFfno1gI9cYhOBh-7x_syv7mOHxihL07la1bNyDYheOz-94YW5KslzmR1HF-L2aHPcTwyt31O3TFriz2aJ7SjRrwo7otXmlVlLWA2x4sb6XuyKLSK6POzh4dRcDnV_TJuooM3dn9tS7YJuf1CoNofsqroi9qsus7-q8Zw5WhX2zsublzr18n9ps3VtY_GmKgfgK_86z9NR42N55WCle2juJztJPsO2CiWdbIWcNROGFJVU68bSL3SiOGRAeS9hW7fVU417GT0vfDFNOJ3ol8w6rnUhaa-bJrGr9tUx0FArGgBN3c4DF0EaU6_NwxsW1w4LQfwlHTGZsR6hpO-wlMnnjDadTpZvciwUr7BwyJgOZGARXfmnLk3rGtXBuVFTpXQkRQlot5rm9rCc0nemSQX9j5FnlZwUBp5wZp8JqL4oOC4pZKF2q6-gRd3oXwGhh6b3sY0HXx3hda1M_-gXdBpaoxH3aY3AEaDAXtapwujDliWI3jBsRS3GYax7jwMdbVzbdVItuSCqEjxMApw1h-vWGqx_41GlWGG8ptMBSVeeDiBHIt2AE4jM-AiBgig13c79XowhtITDSFYeP3cFS3XSo_MoCtQcsMn3Y1F07ZeAhfCKyRthu9jLKS5AXFIkFfYUtasaEd2Op0thK9QDvMniDlBNdkjr1P9ou_SFBxPoiWOcxD_6fJAVb5nPZ__RBOIvfwjXuzc-DSNZ5-8dEe2gn03SKg970IAj71hbYur9r1pj2KaYcITLJCaJhPm3uK4ZBfqH7dU3BdRgM6EZKXK3waoNbfUgpXrOmUNlyOsxCddi9I0kHh8QAOUtR_vBCYpkC3BvkROo97Yt5W_D61L3nc7Kl3WMEfABH3dWsvSiPyTuItZZ_0RiuyXCxZVGKLW0jPDzwBlzk4xXXqsSFjJy4aOmc_yXo56PUW7vgCJ_5y0PdFW5l2EBj_XRxx15bHEQ1H_mhcaVtNUNO14W2DJLLHpcCyFOodg3Ed6IVugB5Lg5onRjEOzWCSjYfm2cZtXifPn6y03snLVs7YwJIYPKhdFVOiDcgK_diylG8NircGOJap1M77fSnaVC3LPZ_x1YxsWu9zxCR7vpHh0QFy8SCcXoIiFzhIUvncTKlpZKPGpWQjATbzteVZl9qhsN9f9-NL9F0vEH3doMlQ65L8zZCQaw_nfPhzb_W0dA7DFH1aXkaiqFF4em5-ovYF50_wrQTU_dwLX2Ksb3lJg4n8--ONcBKYbMAilhf-7LAH1nHwZR2BSzA8lP4fOJqJ06PdxGWvt82mG9e3beHWAmadK1_a3MUJlxYj5M1tPnVsRkMiD6t8FEc4Fr5n5Df3OfMlHW0XWAx4upgF6uN7lOo4GbeP4A248ZDCC5Jl2aZ_OjIrL5ul8bxJS2EirPymOhCkWUuWHQcARcW3BDNLgXNPyNaqb21Am29VnNPxAJ3ITXuebBF2Ytr0bbrFiCFl8_4Zjq3ltB46jELIz9jlDRq0HxXacM6cRn48tNuOKaoOHfkx0bl5JO08JdHss5Kv4vnQJidNcbO4QGUibYrv1RMyecUmH1YVmPoc3zsWNLLPl0qnXgrLtVH11ui63qFAph8f_sa3TL-W7LD3vQHYaEJIT7zHOunzWo50NVaBC4h-pSXKcYkAoy6SRK5B8hC2uENxmp4MMBDpveeclCN7GzrjlF7kxkxvvTtB4AQQ3MN59IYkznxpDXX6Y0k5THnC0SOhY4kk1Ya3p2BAtRp4ly_uLX3zajCZ6evnaSwIh2DFOsvPZ0_qsRIqp0s0TwDqGVctUWYR0WFo8-Bde-L1iqhW-VS611cSSn5KeMtMMMfnGQb5P_evACSCgEJDksazbGLTbFVI5n6U45Ls05sPzD3jk1cCuJ6yg66SL5T5SKSpEwEJJm7MYA9P66AvIvYWaR0EhjPFXLyxgXLG-m1s3FIsuKFR9BLLoCRFfuVa63Ytf2b7ymT2gw4krE8eGLS9mIljD3wtvgmUjhF6KFk1ow-4gfll2bBkOxj-FI14uZ0Rq8R8_wzKwbgGNMocwWKvCwmHqAors0oIRz6OsYieEBJI6Hj5dkGkTAliyVzLoNum6PGRLvDPNP6LnYCclm3G6PtBC0dKxqgWGJuE4TewPclVccjt0vddipV6ta6NmauSXi--ZVHdt6IioX_mbU1No452MRmwj3lIATWAaf2U9bl8Z1rZYPWDMyBen4PyZTmOZVcUHpD7RvEGucInFlWMrS6IeYgFJ2YNmVKjl7wjApWQGKKPLhTXQGyr7b2ln6q2-1hwaTaMr6miuODOp1Fcw4QV2PTZAQZRZHHttyaz9y2fgGS-eMGriw5Qd9XeyPZ6uzV_mL2r4YgIfmiFgobeN51gnf5BojBIz791edh9jWJv_OBHFuEWftqk9nzuCTIEb7SNlHhbDhf98kOAlh3RHEGSGk834rzSjUzZVEvkCmVWWirg6NfiY-vsgDbq4dHtTEiA_5khNWeuRWMu8L-fY-x6gGD3I1xlCyEWx0Msk34IxVxx92sVtmbWfQc0gMldriBe1uw3_awiCiZDv_vpERe__m6t55pUM0m0Vw6k0OxK28FOciOI417rdB9PG2g-LaUTR-wEDmP68tT9cs8fhb5IgMuvfhTKvpMAnH2iXb-0cM15ctUREw6ckN0QzrsdSddk5K50b8PLzJ87WR1eOsxZXWJGbj4dSVQ8euK13l2B1kEMvavoJoERsqJ3LB7XXAkOiGcnUQQdOezRPf8DaOPBG-k_Rsm9r6h0B-1EMzkjwFBxHIWgUEiWv6GvPNm7jkwGkH61WUX8Dfwey3ZJ_Rv5jDVQ9mMWevJoFXj6TqaIbVdrhuHRdSeGHx36OxYdBsaU9agiIMbnuEZisqJ8C3MDp25t0N6tWFutf_ouECccWWcQItjQunCTBJBW4FQp68r0MJHFxMD19m511u-0OFLOQfFqVpIIpWcfeHBgTblV0Ksionn-bJ3ZPH9iy2eR5WgjJS2MxcSTb9vrovKnzLRoSIGoq-JiA3GOP7HMSL9lKgg0gOmSPDcjYlbB3Mxs65Mi9hf9PIRpLmmWkz3Ve2Qy51mLqMUFsZD7bTGKeX8Y2hacwn2Ha2ansXDzg1lP8YfwDP_1nu3RSDPm-QQkLbWRkIaK2GKdksJSHuyickeeHe8a4BVcXVHjwlkFy13Xt_G4OFoXEOWA4hspRcrU9y0Ff9T8vJTcdo0rHaVMvwOBxDYkDaZwkz3PDgWDcuYExNNkNezVEQwlMVGDp7yihzNDPAdTyOmS_nsiYKwwL8VZn6zanTl7ATUqPGyW2_wsuq3sybhYKVgwhJXyvzn0hA2_G43pfUm2FFGuUPgU7QslQAo6OPEeeDllRuZzxK_mohl1NhbtiF3hDxnjUlVY4Tn7ZdO1OTUaGq8tFM0MknPc6WtLXxXeOFvk901v-x5OIZrP4pjt4A0mba-kcSF9YhdzMJvyVcQZsiqyXUVETgEKxh0DiZ8n2fyid0DF3TZ3CyZELXT-_8dir5cs_6Zy-TIhvgv_DLv45tfyqMvNjceOeFIV9lLoKZQor1VLncDmvn83_cCBtj7fI33cLxSREOuLr0WL9LSAj0ql62-S-idrPFyRjGTsDcgbnizNZ14UoXf5FAK8xBZ0a6A7v2xOnTnllKpMxOFAKokC28LXaEnJixbErpOcG0XrogXh0WtNNg7DiBx6KO_4wB4z4Re2AAiMDYVl_c9i4WrjmDxlJvIa_EqMD0e7mZvAWQ-FHaPT8pbsI7ivoFl0DfiQHg1xuM9W_ZLzIwXtMf9w2NbxVqdVUNRiInh9O5s5-gqk-VRJXwqO2PtV9T5D26BHtgFPg6vjsBMbmYNQK6qjqm6rD52yU6qBTrFGIDMwQGwvZKZR6r5q0Djh_EPb5xocx6fUn0jewVUmRVuMflKK_BNzy9QW2SJ5rAhnLBtFh4LqBonXYhvX_zVq3khur0CNqrkM8-qmppPKQvy6G6iOeG0oLwbDNucn67AqHAj3AFVFmx1HL9PwiIlwrX-wJVoJIP263rf24rdTqhG-8_ax_6OCB3QGbg3oYS1jVnc-cdllJm8dv01hddx4mQCTRYg2WFeZ_eBYuqOWKLUmlt7MZniJzysK_8BsL3UkJGT7nZplUVTU9Wt0VXLosD79ZOlmxi10m6fqWJc8kVSXrZiPq9U68Q-Om5626Vilwg0Cul0kapR9cO2m_XkL8fNRHDqaFSCrsv4XOSupgceU4aDU3CafIPUGw6X6hXHUgBeUro0LLQeuJVW0itmWmN3bV4nX8mxS1W5-4JVPGe9ldtoZ23ZGjHVGwF3fQmf1KMRvS4WXLbHkRtmuFKZ53rW4eMqEKU5p1y8hMzV6SjWTzUltM2yAqrwvNpCzSrz08V8Iy7DFArqdnYVlV705Bep-4cAh9kgcGeT7iU9soT9p1XBbHBEMpB_APonKcxlyBQAqx9spPV56DXadzkwNCmW1c3gHB8rJoinNoY3CXLbpNLb3QND0qVMpUC-kC2VsLM7kdmIGPfm1qXKlGRNaN0id_JPGNkZwWnlYrJdh9Lvjhla7BwIU1immtPLFzKGgMegVeRYdTTIKXxgLzSOZwQht60Eq2uwbQDOAXElIYA8tSUHD7g9VawV8N0ogolg-l9Mcxl407UsqifjrUScJ8lJS6baGXzvWGsICKiG-pYmCEFphypVtyYPhqOuhUaxBfa_DqqVULxcflvJYsxVgmAAq7G1lCM5qA7TPuI5eaVcW6xzj4hdFHMcUe-8QL6eS-8PiIqlcxJbYzFM9DInqIfw4-7l4yQ4gxFyKuA-6y0u36oGmJUDzhcc31zicoVlpu9UnqPGZOH99BJlZuGaeAK0POtzRELTezOrRky0cqdju64Snxfe8fLie4AcYEeymACgjKYthaz4oHUEnBRSO4j_ncyVLI4m3kjyfY2uyj_EAYvSKuTyi4s2Qv6o8kZeYGC_nFSuKR4g8epMs9mEwT6sYcbaHxAcOfoa1ZinPVFBNbKwz-oy3BL7VozClSXe9dMT3GlIk-6WhQVO2VUURal9QWED3uPL0gJ8I7YNvxJOjTHogvVeb6EFzKho9ShUF681Eeg9GpeQyda34qYnq_wQIZ8aatgtrG0SDBUCoM4mpO6ZwVwj33hBK16VV2H01px-fktYJWfod3NgBEPDe1tNZS7JHr9ML2kqgoARpaljT7CVyMPLE45BD3RXrcjILkXEhJSAsxsSomouMKuwBgaoeXi_Cjgu3nGNcHpYA3ipj-CNgBpR2vPMG8NU_2B4TNrd2msxrSyodZkN9tqhTE2FAnaQeLv81HUirgWejjdwPhgFyw3xYr8yQ-OjaQdok4o3IfgRApAhGmDcdqiqfS5Ibg8fKuU5CvTrWFuj0E0C9dam2E--JfJ9xP_vK3BNTbHleA_1rhLWaYW0oy4gnC-sQgDmUWuPZZNwjr-rYJc4ERjpMTOIoNPiD1dzHBY3sg5JE5OZM1D7Jk3ynenD0-oi-AXMpvscKmG6IGU5TPqBbpuRoXTDFqsYH_vlX0ew79HZaUvsIm6rUpXqgr9lA2YkaKcZ51CR6l0G13OfQKxttVeDpY-2_haoB5nO1AABa7FVy4Laydp5EyflXFNlOZpbrtzXwU-S2_JGCh_wyhLnvsskf9WK5oZKLbEkDq4ooh_8D8l_bmgfyCqFKNfHS5iGKr6OX3owZ4Wozfq10WO11vi75rhS62b75OEahdBpzARWW7N9MOC1eJUpSHgCXafaW2YWENK5DJISZ6MITkscekwpIMBMzlW7gOKpdZLYSLVt1Ze8ELyzRS_OWo7dCJ3GVWXYQSPDNQpsNPQ_lg_3OVOkdU7JHELMzt1IiWIOqhGz2uRif9deaZgk5iRzGJkZWZd9Ele6mZipL0bSYxEJ_yi5l9PTvXZ0PoB7qyiCQbQGt0txNyvaJXqfpLpguJNStat9OSKnT_7naNJPwjNzdK3x2KpExyBrLKd11DyLnhjcdki9PLcNj2N9ZEugcQYMHXgrbDyoGqQm1BpasCZH2F4RZsPKETQPV2-pBI9mPzIgbHtjrbrDJReWqo2WmU8eyOyn4xm77Nc3iewHFrSynCjKFBZ9buDMoElmb2QvauItkVyOcQrqub9AWNHl1DRdKITu-q_jRU5bO1mJMjfUVtH1f5ACDZIIQVY8BzvfzdcZ4ziYGW1j64ybdJsRKYv3BKLoOJuS8d7zABw23nZGA50TXvkqsyOhxxRJmrUCAbXsqfSN848MIoxBU_P7NZS2UvMwyztTbQCoAEHp439OCmEdc8FSU07RMKhGAlrM78qI99SzlYVSLJjqavC7pXZ_hUWbR91R1Q2zR17_gmrCcRRzo_HA7BVhNo6g-WVeTR2DQyMx9b7TcdJqSOdh82CtrVCDzWETzMiET575A0e5YAwh4arqAzyqSMmqsoFqXRCWNyf5bjikOAVGSwePmGNbK1YPkrcOuoxEYQ_soisfrqcVxyHHC5HiC5jHw88JCvdm6CAOiFjs33UQ1u0MVTGV5O6Yp6-8edd0gHUFAvpryjGfqqDwQKBwfrJvk-eSxi5K0DXckPVrl2yExcXHaNNbQTd08vKDlXb65QdJiPfDMVkSPVLQLmk7R-R4U4TR2ZeLTtCBB5KxTSxpblmt2UETc5PvnVPE80XMNj-ax-zzPKCrv-elKoSKXtG1iblCnZiRlV_YOjgHlJiN9mYbK5YeTn-tJgEalmXuYinYQdn0XGGmQahc5ADpoeBA06Hc2KVo1VjTJlmhnw2zf3lkXfqXLmgu4KntIkpvo1AsEbM7ZGX7_HrbngVuGUQFoKkECRSVl93aXN5EAdzt4cl2w-_uSKp1EZGgnZu0UsetEvaxo-DBNatAnIOuh9Z3aoiOuUPdwZMfOks4Sc1nrvwDM-BDoG0YQ86TvVje4ZrDlsvmAVulwsmjBIH-1otttzx9X9CeWx6h6WJqIBQDk6X1DsAmgg9DeZmRdy0UHP4q3rugP2RMU9FKVasn9o02Tqwz1l-7wv7fJtB5mANHv54D9KunaqsYV7L8pxacuHFasVmAmVBpxcj7FJElTU2g_9zev50dIsr0xX7_o6stfPsCHZ-pMuVsK2LEUDmBoAFxbwpW8BMV5iJwljisAvAXekJ2cQUejJOYKavpiwSjmR8Q42cUgv_doXjx8c2elfHFLAiN8d_nSHXu7CCoDCL3eNXRl-yBGKZnFInEU4hY0RPe5aqNUvaofd1bpYuMixIJvgtUEujL9r8vLIVQuF-9u1iHvhRCbkNc9uB_aDiFMj7GGmO02wHNQe6-oAzvWVPQ9hlX03-1W7ZWbHz209Q0a4p6AhoHU_d9KCSdWHLiKDp3itIJfRntla3IlPfr0ZwnBRVi3ukux89RtBotfo3W3m9oKJXbO0Brn-_uXavDBfKhFfNnkFhYKGcHw-_A0oqeZnPExZ7ni9YV6X_K4tXy7quNHkqVk_ATg5ukw6rH1P35lSsZ30cpXj3rc56K6Ph6JqASmhV52GqOPB5lvwjIWj0bA_TLQngNlkpOl5I70h8lgiJ6mn-WF9-IZ-l6rfS72wownVdFGrCxGKAAGtQ1Dfz5rcvlautdpT1O1Aldd7uSTBw3zu3EncWTjZa-YaHKNJLhEu_Y6qMzcup1fEshiFF1BRqCfDkimdCqDjagS25lAaIKSXFj5j93x9wo4Vp8ckgulcRG8ZzTwiED0s7CJxqcxTaUcH1dF3gVurWF8LActdzr_KHzTy4Empso-zOHEkCPtbK4Xclz_M-x0YNYXE5Kak160sO7kXTUc6UGKCU4ebaHsJpF9pUL9aG2vkzjG1djFCWarNws0AiKEOvsrsVIFzR2LLvn9AAtKwqzSwjv-iU9SChrX4o-pGN6WBWZBxMPskSHkFVZUvq5X8nhugC8UhFJVFfwD4CXP7TTmAbYGU0YYmmk_YJOpqmKSjFSXqh2UdIhy-bEnpik5NBF4zbu8wmqX4Y4m3cxJAu_5nD4v8FoRVoxKc0eKd4NXJo_NC75J-r-PPqhF722G3EMF3wMfW5z_4y4GSCxpFxfMJj433Y7Ac7rlzTyCVe4wdHLne-fMhGowKk1F68zN2m_5vfqjpGxXG3SI3Z-n9VkZBMxt-C65bMlmwqcVPWcza_hVFNA1y4-TWkAnIcevsGf4YdRnrc1BT6WkL3PEeOs69N-z3iGxc0v2_VUWOYTZ2WokgspPaA2l9Aa3RCzaFagIGnBVjNHZ_-Td_1HQxM_3rldPKk4YMks6PAom0WXlc9tEac-OINvnqGhksaLGjkullxdCZ9yQcAyX3N97ghTMMT0G7_zssMisYubrIb6LHuU0IVptczNjZxVdQA_ZgnjyoVuG6PKN0t4UE9C41YQgUH2F6vWi5X_i8YsjduWPazoQIFHLTsOYg3xB5YnoTC_2NIB_c8g9VTp3NdSfF05RwWKDaKENzrzrGN8FiI2pVviFDKH72Hu3FQWGkjdfvTsiDxqwbkBB4tNPSbZq-laxj03-vG--U2Q77jOr136nIPTRyvWk1XN7-eCf7YElNpYrY0f6x9zcTfdf75xtPfSQk_9-adeEYJfqhB7nOSRm0GRW69NUnp36-IT-gUfQLUP9lOXzbRgZ5tZfTcymZZu6sOvn-1VEdfERAvxuaw4HTO6dfeP8iEVDS2xxlFRY7YureKcEmqZ5Dfui-nyCMt-hnja5zshR-Xgr996PdW9bIih9SUHBJ0rSWFrsZII5_YWTQE3w8lhGfXdGnBH5K3PC3nfRoew5ZuUUMMM_c9c7weXX5yUGX9hxJVPDiLp26CCc5glQnZ246rkVLgYrGKux4eRW2Ripy93sP-uRKARUXgrKjcyy9yQ0pK-3KNivSfHr00IkT_74bEcbs9ta8Ti-Y1t5SCk4evtF1Z1bzUAKq7TszA1LxZ0RwfheezsMO6AqgP9X9NcF3mDTLEAtRcEe-j5mWeyUPkK5Kun1-hFhKfbPPtctHkoJ3p6Wwhzoc8vRHZAHJJaVy4Z81RXYQIeXa2xfRF2zSk0Y_f32B5BVZAoD7vnTcWobkd7VOcnkEVLsVjduJRn1umQ0liUTLld9SlZ07GsDIDXRtVK8cMdYxGgFjKFhUoKvqXivkjKOkORDQa7lweNv-8EYaUkCtMyVfXNG_S0Sk7OaSs3mtO3OwhF3DwyYl2-r-5VYM89evYHUYKt18UUev7A6xwRE-MR9dCQw-J-wrgp-TYyvyfGJjOiCWedrHAvmCZM3rzJ9CTu2-Xp21lo7RG2p8cCfdwvE9wDjDJAmZ0KVUODyVR4g6p8LmoD4lFA97CsGs5Y6WaK4KFBrdUooLSixe0YxyQvB3r2P4BW041Ilk9jwe0wfyy16HQEiC-CY0DYmHo1bxTrPBw4LopMrTfFGmHhIroCV6VPoQ--YosLj9xfmujDOpQTeXmd-gzCKkiqE0z5xUCPv2aY70Xyn_P3Ut4J_jaZKTxFfRKFHRISQIP9JBTTqfqbQ_S3gIi3QhVEX5CyEDtdp2irQFFB_eZIXvMQZArauZdaq0o49bfRjO9GGjTDxhveyvlLgU1jp2zQdA6tP31HgRGfSthp3BsKq1Wk6xs4ewxHQyAFz7705sEbZ1QQ1jG0RtyWKtEzAfMkzAGNoaAqXI1yNUmrglO4atqvBmVL75DH5md8_X1IXP_sWTwTiG1QWqOqiA5n5jQ18oFWA6DykMu7KeLliB8NJIPG42bNAZsz1iNAiySwFE2ehOKr9WnAsjmLxTu4jWSnERBaARmxW32FShdv0kD2RAa1Zuz7_3jZOkv-n9zxY6kh3vzGco8IMTl_8p-tfO1ZRXtW4ZKjkBQsu8aGjOwmh4J_N28-0I6qjXmJUBja0Fc59FuqV_BGrcBaShQGc-ahv0Hak0BK_Js014Ly0IEKfQGLz-xpCwaV5d0baCFlWCB1dP6f1_SkIcg_R1nhtMaJKBJOx06SLZNXipuCoiyCJiUgE9HNFObAswlioTCNwtAH5u62k6kS6YFINCH0Pq4kIgFlsnB1dLyH9zo2W8ZzQWRs6zllreIy6EZPLJwfLx-8Wy_CS7cvXXQ7ODLH-ca39KxLD8HiRxbJRuI3Nk51TSgUoHPNn3Na7GbInEPOKF7kas34_f1WtmICn3Nk29EL3jbKW4zEmyvyPqrMt-bd7CoUDxLqtsIgtEeHXj2_VsvulkLt199aBs5eieflq5X3RBSymykCrLpEbIRwpARbqp62nUUl7z74hEbmylu6s9SzxuKcuJucirrS-M36n1Thbeq5rSolUUC8Sjm4tiCAnSm2cvANE_vQmVtbN7WX7DbHR3e_CkHGO9R4mBDVsowTu--QC5eYwjXsLn4BVaTWEmBdlfL7sg7DFAel9aBO5VECiITDZuU7zTh1siBJukQwB_JJzb7Ax1TlTyHTRNdV8UFvki6J2XVwvrted6F9tAcN1WPFm8QQVBGSXxOAgiyAYCYlg5DvYjBYL1V4KMoL3DkshmJ_S9ZFDcPXkOEKGfcDdvXJW4EPYt8TIjuAT57LolsXkpVfBI5ypxNtg2-PJxXUMcYoOKxnEXdczfV57TADVUCxSZAbr3TZT7ww5skXPwtE6m3si493B75_273lex0b_m0KGdN5kOEFgNnJU2QYDn6SUSAjulR8XpKfhWr533uXxpfSvwQmi6VP3tCmJ4PNBNOwyUc9op5c8tURd-9HqjHEu9IhNnDx-tb48_ycVIoKeIwki_pQvHWyL3dwW9_fP0d6E20yEvSRXNy0tSQ5HmmQf-ytHihXYeoqzqvx0eD9fMHyVdfy4KeTigQw8T38Jlf2dEMYgPdwn_l6bvHD8c7Iqb5koO21iP-1wYEVunUvlJ3deiuWNg65f4EC0__mfz_E1iFwzbLsAD7X-6OZz5z6xwazObA08Otn2lBz8p7rnl_5Du-UXwQhqQ7FQxljL8uocu_PhOo4Br0nwPSuj49KVyWNKWHzFIzsfG2x1WsbZ2IOoT9e7NxhxZGrC9UKkKaDx8QARm4q3nuJdbqO9JQXxVJNZCA2Yltsf47yHMj6IOoa_Clm_Or8Nm1QC-QRTwAkvY61rJqAZzmhOxFIF2bwH8lHy1xZrrPGd5g2Gxy63HeLeuaX342dkzg-mu1_k9oR3HQ6y-ZvTQT_K5d_7XZovFL5CleWG9YkVV5oYPpbwh-1ZhctDFfRgS004bqNP5rGugZ-ri25lFuY7IZF3tn_OPhf5UHdyVMYEXmpJW1QXfYkAW3sTP_WsLEMJ6MIF2jlV9tl7_tIXYJXKIIsYPni8PTY8YrRUCzdWkONz4aUxDVAHozY6_TykioR8adOiMuYXNCDSfaRvoKd2Vn20lsbTjoYWUs7VcSZ7GuTLaXi1UMDMTXPcAi1VbCECWDGS7RUvrQry9LYaEzCO3jM-1aa2foW3rYpDJys2tw7atMjA8cLMVBIGq5ayaLMn5lAojRpzUobBJRWOecwod4Xf-AfI0MoFPRikg8W_7-I2_DoCfXQLrKYQHfSfybCTM604C_y0S9QCakjlh23DzdjQn4LBMwOM5t1AvecQanxX-fm5f3c-tZzjUJCePfgYEnkBsmh6QOnKgLrhiAQCNaCXl6P3M3FZcfS7jWWBNEj8zUkefSb49Jc67pWndPS0YlzaU7Rsaz_IhD3qZc8PQPfogNmrVFjx3glTVQXRH5fUFK8MDeGzQMknNBxmD4VpDcFbqjc23p8gZ-OfqAfDu_vwipcph6k7CftPfwGY8JtzzAI7cC7WX05_70LWrGgU9msqqP1kWPmvm38P7OAD4yFk_krhZyF4ISYkDF7VfFdOmqq-2u-5J0xXGVlA6vZilExvLQgJm77ILnVDQMUgXYIEW4aFCZOi0Y6rGmj1RVxKIP1gKO0yYUg3nhMKND3AxjkG10TYiL000apEJL-E7rXcVHc6wx2BLfR1vXvYwaacmULqHg91IoG6meEaaKheEVcA6lIPlOE9bP6LHy7-v_43h1oukm1zxe30790NTmnCtBp7t44TfTGYeOZy1L5Nbh2I6u7U62c4DFPaLCSbofN1wJ4a0BSKzojN0ZQEP3oet-3NQxrOvqHM6jtqRfdZS96X250JyYk6ZLv2Qe8l4tk_lKeOV0Hy6fAfXvu1ibQ0R-6prL1TLdZ8PYCiTPlkekk-jCSgLzymiga62o0oKkno2jX4T2kffe7KzW2IRAMgyyhPOUxkGGZWCEXVk5dBPeJ1YVUeqMotYZZkfoTfWzOKdyRDvIPca5PrjujPKSiDZmaCFZpgBiJK_QBUw-iNKwAnnet8lk6O14iM7jPJm-vjncpPgQvW-KhcbHcVzm1X5P1GA54G0nzsTnB7CnTupXD9cW3JXWkxk5Na0BrRLQN4B1VmEPeBxNB_ilbGVRBFaEdp1EqPDbKHNqQps4xdWFcchQ3UB_UsqrX8z5H5BUqBD_uAYMTiVvQdiTXbfJ0TWj9hnvC8mBysLf04KVdcDu5I4sHH_OWmkGidp-3kh8JThlEjApj_1QicNZInUTafcRD874Dr_EIVlzQJqWICCjJ_GZ2HQQus2UI8yHbbbdCXkP2INNs477iE_IIpWonYKm1jMnsvz_mdl8s5REKrnVeI8rm3I-Bt-01b4geVsGolM942apzIGby15GtpwFMOzsQ1fg67-fQfmHYzh3gNTKzUmjcYjDV3hAbkC56hMWFcskoxd4tNmxGq3FzDgCLNCdhTgC0_LYu2SP3Wp2zXdPUSTEPUyS2AiXMvvDfSZRHQK8CHTam3P_MaymWK3Y-sxiZkKPT3U0tgRDUmXO7umJ2WyZH6o5PIs9ShYzM7vRIUqpmxcMXal-yIy4F4nCKywTZzgXqkWwoJMKC8GcD0EYH5ZNyUFTJjZN5WSg6k8LMO3ep3khIPGQQ8i93MpwwqBu37ybt8uy9MKeZGNsoI9lNTIfkLIezRgTLP8fteUX3Rz1NvJG-1ybUSG803hdjBuacvDnoeD3NdqvH2nX2z4tOw5U-b5KQbJwBMXvnnuqjBOdhIPJvJWHG6MVUruLMFAl_GP0OqOIS8jV-jaVBWQJSm5WQhE6zNKSKhsZk_DP81f7Nbjk1aU5dK6aOTRlv32k16I4nL0IgZeGBHZ6qeLAZVWWEk-vaj44Ec5lRX02yOS5JLYEeAQfzAAXLSrhQIBbrb6hHJDDkIuuXXrcVB-fwWj-jOeYela3fNGluJQpCB3rvTumaoVoeNQ0tPKtBd3nDR1_J35nxfCwRdDfxwUV2kR5p82ZCpowU-rASr-V81Nr3agZ9v1HVXzOBT-yoMRRkxOfCwdeg7FFrwS_lFTUCDBVA6YZr6kagNkgJPapRd_WYsTAnzlyquWrYcTrirliKPvAfEgyBbyv6MsH-MQVRtcARAu71AKlJ6lnpCSuPFXUj9sAWgWPw1jASzGga6z-32dr-rQ7dxtT1Syx8IHny2xlInspWruX--rgGdp9ZfpuYoxIw3JMuDUL4Dw28mjZi5F4_WC5U1L6ISIbHtVlcLmDv8Ud7a5kuP3mYqotAfoWT0ov3AHPnHk6eXfw2OIHtxHLN6Jsixohog7K9o-4CMCtdNWObWhTzrP2Ys83WLQtiNEWlLMcIE1DR24baYC2Kcjql4wFxAudTaOgOWkJ2amNoJToYGyCQrYPwlWdS8E6JViJSt8YCdj8D-pXXKOkptdBtVCAzCLIfwgia4-Q9OifkeJgz3NJKsNmmEBElTSTwKOiqRpu4dmTQwAW7p_kd0o2mFn7F-kXPR5iNfehyWtBEiAuW7hnELxX9aqN0cAQn5934zw2DQhCKBIXCrFNtBjMiyPh_mpY3Bv6eh0eIcGGn6us0NUra-e1PKCR8RyF1bdQad5-w2aTxffKI1Z_cC9UQHslp29iCzVVECIcWJoL-PqAT00QJjO7idWKs05imdaVP7bL88GSpEBTcFGZbaOALTzn9EW3GmUfjF-B56bwz4QSYsjRUaQVsTyf7uSICDst79oIIO9XNeIbgT8ZeRn8SSt3AXD7Kty0noO8LHwXN5woAA_lurLIdmddU9GZr7CHDNmF1g5QGFv8GrRtx5iTejv0dUC3nUvBtEdMNTBvP5mbFg-E5dDc05Ou0YTgnkUTBGSWdcqEPP449Sg6_BZoB7y1Tpl3UPfJBs8x3zTq8dHq2qgewTu5kk_Bj31WXQbFOAtsp84OoT8uC70AXYQfyYpJb5eRkjFYu0m1sPbJ6H4HQSlzojBw5tiFVYGubNQlIZ_HyiZh66BwKRG0_QEHNsIz06wengDV2JByFiSawYtP3ufvr-bN6Nar0imCnJMKjtJy85gRFR75anwrR6Orc0wLt_DJdrgv8m9Ht1lEgaq2Mr5kQ9-asJdmq9NiJjw1f0XJ4wuVJjxbUn319kpgOmRV4my7_VqgXwWF9QL0PAtx1uAq4QvQaVQDIYcKxu2GZaxPyvdLutXP3Jnh8qYcoYsZSuTTrdR2al8Cpj8wdjFja3g0z6HD8rkOxS36fg85jiTf806mNocr3rZRzd9HcxYVZ-xMdxBMTMk16mZIvtxYvDvKiltHxbVDuzkzn1ZnfZnKQk13kMHZ-4bLW3TY6QZjHBuLhdVmOgSfgaHspNB0C5ThbzUciqMWUm02FKPdVH7U9GtZ19cLVI1HMbwtxMJWIUWAVKSA8g4-8AWKKON50GvRqK-UqmVO6QPrMdkI8QjphQIFtZTs1B-_kLbpO9LASHwuPaPgDTlxCusH50KXCtiCHGrPqAIiyxGTpKDX1s02l45ohnNsQrAW6UVK3VntnpxhdYH1pq1vR7RhsptrGQcyOgIXGRy4b5Qu73hz63BzsWX87hl2Jo-dwMIR2B3onz9gam2HdPfXnZw7Mz6CNJMRDvNfDZ_zOw7KQtLjlDicd6g1dOkgrNFNaFE-QrQRDL4AGpF91YiKNkYS--GNACyVgu0-mDDkLjbtyTimzWRjDnwIU-n5KUOll02BWmEDVixMYVrGWbyjezGDKbhRFONipBFCYpV5SrkLKCUZVJ9MaufPTjmCnh48nRg-snQhvKNBLt9BDnFyOIBfHR-0kBOZ1ypZJR_U2QbkZ4wtCXX2lDbK-gVNxMtAhkXwE1PM1QQzhM_rccdC0l0OxrjaWCyewOAOPqQ93L7OnaKvKVmU4jMz8iNqfsQWus5S0KrJg-zNhJu163E6mI9y8i0qqDmfBBE3kb3tAfsVtcDB7-HvkOyLUZd_XDW--NOkcMxR2HkmKBRj-UFnUr0p13BVjUyE2VVhNy2T2Y5qHrKZNTcdxXent7byIL4XGowBfEyC6LMLkW2-3FtIKLCZ0w9TJ6OwSeb-eknMRYO9K7TqHEKyu7Ia-Cy-UPo5b9-qPiQcGV4e2k7Eo_hkuWtOaaM7I8N-Ia6YmnKIatmCEt9XIylpS3hh6tp88qiziPqEAqCkhtCqGwPsXELKTBcihszIjnwL9y_dXaaefnDOAVLeF1q-LUYtORLam8qEhO7Vsogo2Tgun_m8BS8jjC82Jpqzx1Vyj42N-oFLUWIHI089vl2TCqHmCqyVcnPaaGvPAe0HeyvGvdtJEZ2n_yXvgb8ZTtwPCDmUKzUGRmgvagbtPUyEG0i_XhjJ66EHvEnHwDJ3UX-jLfCvfVKEJFEVyG38P4VQ1M_JUanTwT6HYXUII6_z_Jvb4_tb_I7LCceG1zKX9BNNAUZ6-9tPCZ2cs0XHOdrRt_88pNtovIE3cSvZCqdoypZjba5h2vnB9E8wN4cESuuHyJKQ97la5bbVZ2YOPMuB66dcEE5KL3JGW9FpmCeY5BgO9fcb9mQ4yMGMSdu33zwZa-SgjAMSU7qCZK03YqC5RaoHfAMCg6rBAwGGNVkjXwN4oo07SNZ6E_lJyAAFyFOc33IA7X3dgPCqa0BeKlIPbez4frvrZDUl0zYwdK3EBJgbNf3w5CtGvZU05zSJRDtnKZmasL34CSYmQk1m98e0fSmtjU_NhcTZhr-AQoSx0qrA8pTINjftCnSM94vvJfG8NA55jybQn_d897Zacw6Z1yuyRUelQblpVwHQLqfiZKCtCEbsZGcvNdSu9Wx7-FrxHHX1c1058V8hcK85BQUSzBkuHU8A5FtgogpXS4t8mq5OEc-hZakFH2Eez6iJG4SMOJ90WyfCo2IX2rbWtiXmxVUGSKQExev0Yqt8I9O6QdaWlWtkNEoS-XtXpV6KxLF1sZ6jsvpNDnpyMNAfzAbqFWGQWDWPiSar6abw93lMSDOza60-XGBSPhEeGFFyh7h7zBv_v6T2CRWY_u9yK68X4OoAi64IRousZBj-F-6WIpOF0O9OEWSjQdvW_ISD50xj9DQqm7P5k01ML7b06CU8FtVKRMZ_hY05Qp4aibFwRwkCrmY9MVQBe0eTvDNh1Lb05QtljIpZgHalfU1taJyHqUNXHC9fbknef94eksTePM4nkURJna5b5jMk1MM-LDRf833qTyQNMzWbd4WY-4jrMB-z1lU5gI91Q7Z7mxTUOjJq5mQd1JLSqc6rfzpBBVwZy4FwP7Mieap35VtKrtswXGozvXircE9hlDkjZFqjw4GV-z9CaLzCSjvhqdHJmI6dkxqXGUa7BCAywId8UBTbTL0rw_yxD_WVXuOr4C9LS_qnDFOtaGpT6OkODdOgzaqBaY69IpCMJYMjiDMId1GPbRAV-0rAQ04TNJ2LKIlT-GLd8eqXmn1ZYppWrREn0g77hLSbLiI1PdyGEmgrJvNoTKOxbLSJ4B1p5Und5lrZ0RKZS_ZLf54msZMETwCWghcgNnGvP0spXOfB7-azH9qhcYCwpsz0GGwYmUEiX2775Qk3dxfnasao-Dq7z9FdgCUnPhet6jIO0PaiCgmb_bvCcHtITmz20uJGUN6dr4WZmShU4yaqnB-I5UGNQHKbC8PYIp-IwwwqrRJgMvtpH2581zavOOgVG2LQP6BEroRn3pLJ50c67bxSWvYFDWa6Ftjt2d86JYg10SnmCVxLnB1_vxWvvKoEAMHl5-MCQ-jCmnA-pJm1dTP3csDsqFLA54HyIiZN_kXjX5ABaqEOsK_tQkms6DIQmNOxRIsw_jDVgx2vmoNvrmpi_INobxIDZ05fkrtjVni55C3TCMs_amNLnOnW3e18My4oypX664nhy0i3Lhu7xBbaLcgXlgpehX66cOyvgD9c1BoqlirrVlY4t_PB0bpKdkn2JLeIHvie3qUdXXZ6LAZjIDlIp2N4ksUceS_X7svJeTfE4Xy7V-UGp40LJejCZQHxYh9UYVBp5adiVRkFF51ecYmbzFjxoFQZctikMn8id9ityNIKDaiVcJnntHzqbc79EdfMP5N8zayPJb67-JkXm4PXaO_9vXGP_Xh8zfioeJI1x5wrID2n2b3AyseGk5b5I3JVgLyg_KlCnqH8mkZ9jkNrb3hAz5XgXdbURkueqRPTatRdzN-x0JYKHGaVs64tV-b0M438E0BFgUSEz5yufzSOyUb-TomRgIGy1laIBVLfeHvAiSeThM48y1u1hQuQ2_imMdlYZrJBwWCgfubLQLjRlh1dzlv2JF8rxLBQ3OQGZUGyb6LzIKFjOWl9k59GXhbqY-MzJ9mO9W0H16PxgEjwtj6-zszE7Mvfm1wn95nCcQiLiTGOgyZ3oqQo67IfkYBZnzpT4DzKeS9XMm2FiQ0HIuZKnKSdRqHxqBraN3jkriOcPi9870dNR-mPkdZK1RrmlOGeYtyT5MOjwv60Oml7H8orWU1Ov9_4751Yy6QPSUDdQvAKQZ_TU5XXIxyOdeps5cfAne3KsX78SyGeXhpysgunTPiMZqg3Pl0iep9oniFPssRaiSUmu3TJFQDOgxKjR2hNRzooXVUWR2Y46VRl4NXAIIBR03E_CCee2VeGbq9LrfdmHw7FuzNFMQnszqZ4makd4wWmOJDbMrGF4ll79LslhSGJFPLULXGzUkLqx7DismKwQKbgmB4T8MUMBa2d_2YazvAigLYgwsCaqHU1VYjJX0GSGb5VUYCn9tmmOluzE5pL848wn0lOkQrmS5AtOgya0E8FUGMkJ8Qzz4iHeFJ_8f67ogxYsk1YhNRXfgbbzdaIJ1JdluOlKcfcXEto-cA3UAdjD2ZknVVm9cIqCHDEtrhDQArwH64QhzRccZYdbhEwAuGkSA5wfYdo7L3GysHVzd95arjtNF5kwSJ1q2AO4ziqRIlXiHnjUKTpKsitZm_iSelnN3i52FGN8TtOzArPWY7kw0mDI447TH8GsX8Fq7ae6kbZp39ma8Vh9H67REA6hh9CNtOeyOJmsQWqGT07K43376HmtHPSIzN0axujk1pkoeV2xteF_B3--Latr-hdqMSrBbVm6P4bAWDvHC6qY0Oe__JPNwzpMOg6oUIvPzlG9c7_2s-OxhZ8KzEI-OTLdwjR7B4X1p6IoWis3SjJubOtR7OnZLJ6vKz-fGq2tBXCbNUyjHEYZiNlT_b1PAjng_bWChRcjb6X7bpepvb9Jv4CLy44bvmO2YRSPNAEbSD5t-Ya2yD-FsTDzsyKAcL8s3gwwjwKSFWguCwUrSH90o4x0w2QC6fIbZ-EC6yhPh576jyTl0go-a2rxRuNoXuW7717On8IQZpJFzprWwRncSYVUvH5pd3NLH5x299ajRIA2WH1MRgsJ_0-sFXesIWw0YwfW4yn8dhGmyqK9QH1_JTGG-0ysz__eTn56mHnwVGQia_nqDzQn85nNb8tJrNdWk-yZ-SSbr_wVNI1XBh3rZXZ9S15Kh9XiYZQ4ni09EPLKVDHoTULMzQ1DbW-o6dkUL2q_npOkRk_0_Dd8eX4t8s9fy8YsFXczIfENbKqJ3TvevCJZxen5hb8kNmISyFd2dXbwqEqRVk33gDAhVLr6aRCJvsa7pAk_xgyidNp_QRBJl93B2o6i-Y73Xin1IGsy6hZarxP2D6ev0NR2xKJkPfUOC76xLfRUh210i_kjzikqjwupTlCMdtawNZ6CJ_gXS5SG9GsPUjDqcNfRkMReJVST0v6-RLbfm5IQkifeGETFBnfkwqZiacg8z4xO7Yowxxk8XaLnKT3tvJfHnPTAqEOoQnxzeSyPITbTGViyZlTJNHPDqGGfMPo6vU6ADSQpA-W28mUza3qmYf9FuYGAuApDi0l2zlqNmgzZMZL5bqLmavzLDHIenX9BjVOCwuIPl50AoRKyLIL9vIulgiSkPjoDUnwodnkK9yDLKbh6sP6FxmEurmxvI_UL6Nq51j7lvCkLwKYDGp_SdPSwrngXGW8RLixHeCtoejacW3NpKV0IO4ZhmlWUql86dr4PPhcKNEwquSGh4VA5C52qWtgarTTpR_Kzy7h7TcHS-dMubR7qzuXAeQyVvLgxQu1papIa8V-Iiud6PEB4Rpt3jPBBEOeGRiEAAG0TgYJCUvsHp3H-GhHqa1FyhTKwrsVCcWu6rKBK_6UE6SRpXMyA2PFnb5b29vKpx_sVwvW_NfVFWOmgooco7eashZohzjK8qmdeJSAojqPy3TnT7GTMNRFfcaExvbkR7-EX2LiK7lhxe0emkYsfs6YK5OPvXeucmvyQnf2kcTrplrhrSipCAn3br66VkvH-TB3CJU0fFwb4aPKLRjUZaCtF36nl457Cw-ShCthPSHVbQ77x6a9gnYuPTDFs0t6F0SPKCdP0ZA1f1rV2jsfeVMkKPrwHS76gF1-76VvZS9_s-dMysid0HVg2L9OkiIUVneP4e__bHPFMy9LI_tkZamVGn407vs_HXaS-ks8m9DgNTe7LHDBL_uSmxcRmGgGa-_jCXNMjfSByFU3jVWo_1PhSVP4NvcSeTkmUK6_9Q2ns1hcDbItovBtho5Lm7GtPijaWSywUIDr0s4HlzupfXOzEVXXH7lKZe7-GcBRJxYvmVLOaBbS14Adc_YglbPcAuH41IqGgaeBjdXLGWiGS60eaIorw1gnAiaIjCgT4017gNcJy7mBjzpXoo-59J-KXd5qfVpP2RyfEUVoP6U_kd6JeLShOKCEayhQ2YbmDY2rmmaoAWqpzq_VtQMa1wP7yIrfKh4LGPNscGXZ9dt8B96TG60sQ0LfmyV9IESoDxwgoZOdjhi9t3opAOWJJkhediUSjX3VcnnleAdworTEADv38KVkH9uWdKtG-OMgReFYj4L9CDJJA4C1njGEEkxZeXdj2U9vvmq-dBtOJis30jbYNcKF-sUiweuNEpSKIsnAgiLhq1KUq4v9WMhFDRubb-B-RE-oXLghFK_4OzPf-_eqLQqvrGv5a5nZINt2QgBui6_2NNvT4YsHWpSw6Ju5zBLd4Z1pErEo758AWRzhrlf2scXmuIGhDnkN4D0rPm5kg1nJ3yEb5va-0kNtTlYl1D6vSd5jP4aeaptYFUZj57z2WhOTbqQ7Y5VCq7ca0R_-GZN_bxBGR59WWkP8j6BxoAhLfQfrsFqDTfKXhiiAtyS4doUS2jQwkAHKOLu0zvBl6VeMufmAbTwmPan8OAw4rjhHk1ILUmuw9DnYCMy_PrCFMoKDva_RYYC5LW7mYYC4xyMDHZO1z00msz1TiNNhuvmh2K50a3TNoe6_XZcx4sYMHAw-NUxCxMjmy6d7ZHGztVnuwPNZ0XrCHCFUMFA2ex5tKj-jMWte0cA9UybYFgpHJp0qaIHOYE59VSjvdOzSc57np84wjfH5v0DsobFgMHFvmbEwo24kTDBGdWz7mVgow_06C6dtHS0ay1SMBBZHYXCTY44vU4z-hVNlJLM-makUOkiEJDQUXgl5y5PIdn0YuS2Kz4iv2tlWtNzJPbNs9g_-VrRIodmfvX6BFWNhiXqQ1gAWK5IkZyWgMFSTWuZo1uygt_TaEyLdHVrAUiJ1vVjSoIFc2VoTCpmbms98jSDVT288sTBlZspNz3M7UNXNZm61dVy_e_4FAJ6CrsIqMfg_16si6XZ4U7KWBPrPSkM-0_JVwspHaWByl1U13qVhC97mXWITJmSDd39cJdhz67l-uHTAHGmJU09PprQjPopn_VQVobjDnc39Q2rIu0yfOWvKaEwHGsChzBI5aCc4KwcF-BoTeinc-n2UO_2J_cPtErCCTfJV0Fz9vW6Gm3tF0pvMRx9HpIH4ZWQrr_75YS8s_HRkJq1t5B0reE_ctt3nh3NZThwCRGHsUSxNrS4ibfRcU4i8_2N-hE_Lw3aEXO3ytVJ06t53yl1lnA2FA-N7bpw0MByzzDlyVjVzU0Iz4Bui8Iwa8iVQ8PmBU-eGifqHkvLaB5hT3gm4Q_vxPd6DVn8sNW7AhuCWWEZv80UE73pSO-d0FATenYpaVV4hQimccR3TW7IwRR6VBq99LEbu_Zau7o-8qn9JUataaoKDQEZl_jlezPuGacXlyepuCk8O5MHP1gELMhNXPV6JPL5QHlQx23G6hE1j3DXVejHEuc1zWVMns8CTW6YKRUaCyQ5aR5ejDWB5om2vxqSmNies4EVqKhrqBsQikBBKwDYDaGORNeflnw-oK_6OfCOfaAZp1vxkH-QCUMcxiZFd5O2huJTIUPe-HtcIDSjK0t3kQBuRp6OYUsttw30JGJE-ZRA3lea4wVW4mD2f1v2gAZZkKAHOB0je0QFGC1uC8Gb4-153y9zDP97l5E3HqJtz-pJ38NCHc98WbGOuY-mbThN7tZd8JaLGRG7M1yti2uXK_uoFOuXQ4MbbA6Qi_XELHVLv39gUQHUU2jwndpHHVc3Md-Xf-6f5e1Z_r6t7IhBT4eKpNBz8ecVpJhoNe-s5JYpwPBV-slIjAglI2WwnShUUyQeULzhD3D7bYqUV1JV9GKnWSLu-DTfmK7UO4auXXFTXAzELYPT8Weshwpn2bnJPv3RdVvVSsjDSA1hgA7Qq6C_P9Q_h9LxsjT_ssnsogUlNI9BoKgwd1z-Q0ux2k7H5Z7g1IBSDUm1fobfULAaCCtKkh1uXBmm9c_1kyzrQfrwV-HigTUPedrBcZy1PHe50bgUk9QtJwgf6W31S2lwy7zWgfDATDL8SBHQQypu9rRFmQhmEWqvwUSok0kxN7CoB4aKPLHd84aRkGf7GUVRkFOvkcM5JRBiOkOAUpvV6N6hQO-EujTfmavlPWzebFuj2-9t6aQ0RBY7y3rxANi_U5PkaYAQWpEY1Zd_WQg_82q9zOhCDaQ2cBbJWviiNK8XkG7Ps2aGPBt6bFkvlXHYMR-HJZLvHtED6wPg3zQPEEwiFVG5UaWt4r5UCwIa_tQpFzc-0gA1bjdtoI8ng8H83mQKx1saOxA3pJ5fmEzZj-0H0j9L_MC8r4p12FMye2F-_pbTV6EEKFtYUaYNG6b7voTIb99Zo-40J-6DDnrBpsR0hJtV0QG4JbK6dlpkFf6ETaclKqf06qP_nePwQzaTk6gXsP4avnLBVBSZFJSp43ssNbGhjVTEafIDuBjfKPrHBbIGvKOoTXl12Jnil_BrUGnyqFANNeL2FG3PUBh00UstBxGHuGtNwps3vmARQCXmpadVCghC25Hs0Vx9bX7hDgUygGTG6yYr8DCz1VYhdoVDaqV5A08EgqTj_R9Tm9AWSCO7iASvLdlEM8LGME-GbzTYoRSF__KxjugR_1fbHw9trxyGKQaGHoHbmvx_9K-pHTevFK_R2yksz8sOWOPXZTuknBhOBEIOItfYL2dLzuu3jMwq6O4NABFTUEyE6YLbFDMVHG9oJalebwp9vXH1huuj_oY9hXvjvtp5AqDp1aO9wyHw4-PY9Dqf2cN7ntVUZbK9reVFD3zWZ9AG2kpWkZRZrd2BOMmpxmUbd_2Qw2YKy6V2MXdmN09qtsPs1p4zUnVW3J8LamkGQCe6Wwp9RUoYBQIV8ab9l9bSMTdn83kg1S4tPrCWyxfJRAzDchswAOky8Pyuz_VfOUhwVPpB1cWAUVSoZrMIme7wfTeziakTBAq2e1GHHgPbvfxmI7be_vpciGt2bNUT04XaHyn_zskAWeiWUsp7hqn7VfhCPbqXi2rvSmDsiX8IVIbbnY4z-wTJsNIx6gLY9hYVrckpR1MKn7Q3t-xVqVyvpiByGvDEf4hq71AM0w9PxaU6sjG8RlHE0ADX8GV3l3PnpzNs1K32FdCxabu8IonquBqOtsxpnrbR0SwFBs9J83cupNq0oPsOTywHJnhkJYuK-l4ZqUYOn7Vl_XoC1SXEEVkcpghyyXQUkOSMH8D4SiR0B_9E3T1sfNCJHWuGGE2YsiM_jA22MPFbtkgCrZQCQa5aIZGEWLekMmIiKQwHMICBFIZ315ud_WBK4ouCjbEBnq8F8gc39l-h4L19Me8hePOUeunGHKX3hygbmAXxnSm4lPb0fHwZ3I-CQSRL-EbBZb5oSs7W2niFXiFTKD6OJqYJwz9O_p_eo8tZu04YJajO8UOK1XFTVx0hYl4gSvqz18sc48f-KG7fis-CBgTHCU3PyTixUQmHPuMtVxa9ufzLiV8E-b5yJmMpzxlSi8JOSTXGRv6jPcZJauVL1M-xaYd9dARJMD014mNYr4NDgaeW7mKTDPoRPHee4w4OFKTiCHFIYnKwRZjUJzxFkIe7vTdlCB4ZwMUwnb9Wd38gm6OASBncU56RD0_S7PIuhMQvT_zrtFXVuBbfEI9JcVw0EGNL-XrOqbB6RczKiuiK3SsnCx2S4FOVcs_UlufHscD7VRiqlUvZrXlyxNYFOnsEaX9_GIEkjHFqhuN69J01NLKlWrVUCOIMLR-1PlHCVu47dDzcyPTCoumrAeuKBHQZHNANyE99KJdoJmVGbrBhtQfYAHIaJyzQ6AhYFOQTCAY2jmbriJyhrtJH2CG72CWwGbUf0WV6cTM3zvgYVAN6eHHDaUNpNPej-UjI0_PlwWYozwXIE5kTof7CCJUXn4f75HDtcMaW5TEDA973J3oF9V_i4uqSGfCLqMP2tdjrCPXi5M-VMJqcDl2Ks2qJIrc85khE5U5MZJvFn8MxX5jSzb64gPYEASV8I_DQcdeRAVaU1GAOj8s4RCRq1oag8AD06Vlxrij6m31lZiXZdl2UdFoVg9HH9qudPyCrPcuDQFkSlH2zICZyN3t-zQv2wMK48Sp0Razl2Fs_EjB8RW_O0GMPlQC9onSIsPPgQk4hD7SVOygdwpHDSeMPezjpdUL7JDVS-k0gNOEtB9-yX9UIVSoBM5mo4b7G41CIAF97-aVrmqHMbf-nRVQGsEvXMATQLwXjTP2zST0nu8C8gEfP3uJqU2SmKPRw2VjTsMheTpSHzKYmpEjFq1OxQj7_Vy2GATeRFqQlnFy7a3KsLmZMrEjRbinhJOOTmKf__y2RcAIBTStsqV8wFu_ZpQlHmczxc6Y8ony8Wqd8VPx-AeWADs9Ck95QEz8YeVeAtaXLeZ-DDWDyHm5u2oMXeLfH1WfVUJF2O7LlqYt6T7q8d6jGUEmvdsg2CdM4JZAzyUSOGDdleqAPMCeVYlSnohNghbsRDtoa20ak0rA8ypz-fok_nGuJvWZz6dX2_0rnXie5ETpC-ckg4oBvj--pdil-QZTKGgYPe_y5m4g64ZsLiaUWYlmJOKAO3lm7x8f3AHlzZ4bRi2l8En7XaXMztk1jFvZpUVJPIDlCXa7nBUT7RpOXeTsxaxr7qJrWkznyqlDGPjQe53nMmuKBRYeKFsDftOp96ZJmAXpU8uSgyZs1pAInGUJSIsSlLxGsX4e6dyGVJ8VXqVg5vP-Fj_eNbyvdFgKIPuqH89WITVC6FEkk4BeaHsq19Ic8bYhpgqRcPaIT8ETX3wHy3pkkG-wYlICH7qfSAbAhWhzjAzGW5Nw3Pc8fpc9jSwSbOxgl62Dxfp7zQLhKR2U2YsNAAgWC0fc72e8_RSY_pPd_oCzu01TnzDFIcjaE58fCiBNA6oL8Nlj1j-hi4YWSGdQ8UKVejIuyFox16CuBR7nmz263LwVfkkLcX413gbqzE04ViNwDq-n7sBnQX-x3zKnJYYYW8TD4Sh3Sj3j1AYUyAgpI2Jce_RDDXGDy7oGmCiQHYYdtfQkG878m99bWquHd4P4-dCTeundjpB4Umr-HHmaeadY6_1bukqczZdoX1ptdkI580kE5vUDX2-24ty4DBUzdOBvNB64tkGiBxhAZluPpKWylP9smoTMzcWyJePPsQuLXgJTgpoEBHaQN6ttEUuBDK08A34lJ7CIlNmtdPmRqXo3OJvl6SYleTMuHNdNmDytx0SSN6BFr2IBdVK5-SIzM8gA1TmpCX05VzR96tBw0u4wH-0X8xxzm2eTp1mbMxTaRskZPGv9Nf-Wt0g4tsKya339mMMsdOJAV0YxBBK2hiWNUcX-80AEgHisziG_EuezxVCWQ0fUGWuUMzt65aQCaLfQ1h7mEu949phip1o-qy9yXYC0NUG3Sk0ZdIDFrIOMo2yHNifxDEjAGkHNZxXsTsAdARSnzadINa5ZnVTfdBTR7O23l6lOwM_05DGkm22fdbTL6ktMCUUhzG7OznpXJ2ukuFnXmhI8qUp8cRadjPT7d3ZRXr3GVApZDrTH-rUFVGq2WnRqG9aOEX-Z4DenFayacHGq9pT_0Y6SFEQ7xTudx9E0MDzPy3sLe0llpxU0vQb2fcexHbZgLU3P_Mj7M6SZADgMwPKHOVlap4akB_0JoaP0Y_jQiWoLa4bTJy1HF5L7oj0QLPFF_j4lL64xB02SmLQ7KKmZxQsf56l3fVP4l6sZT73G9WH97rfP8xxeWSbxpdSf5ZGFy-WWoX6NY3EkY5wo2VUymDf4efbV3qFwyA6J_o2KJ2u0egX9CkdB4OJ0cvafgvFr9AKthVp15d9VRrwIYtLFY_1gr_AGegk1_bkN7REPUJvQuZql98ELctN6PMb7gRd6H6Kxz5J73OAVKZFDn0oR7YoDMJ1Qg2nQM_4WJ6R4P0jh2nTKqZ_GKMEj6Lf3WRDbIlCxN-h92MTr-YfE37oRngo38_0wXbj-9fCLODDYeTdFyu5CBtpinf4_IXrOuQKeJ0w7T5VOL2XU4caO_BC1H1XwI3nEP8FCRWHPZp4ZfJzL3lQMiwpCmql7UpG8vHMpw5mC2r-kY6nYsxeSKLz7yS-sg5sX-VQEzKijukLWZuZbb0Es1jFLWoc1m0LtoMs-Nl1aAhjcEiwmDhPC57zSC74V5DB0iBBqr7NgvyHGA90QMQi9wR2zUrxbcQmB-jWSL-pSGVlTRoOGSu9e3YNtMzQBqt24XOMYGTW43Rvv2MgP1qoKukZ56YgKi6tkMF9Lt5JFvGak5j1Ccq9zWAY5BU6n2XzHRz5HIsEFXm4wqQm6j1LGkF_He9HuNrsteC2moy2n7ET4TDIZ89CIU5lY0EKqew7CcjjUagNl5BPEiTRDCZg2PlroOvmAvVxf9wgplKcYemuieHlYV0dG-mL_BsNMyBAyVZ0wqj9A7WCkRqL8LtABZEBgf5NcAdYZ-OPg6tiGLsC7ttJPa7B-KSc0RhJ41RcOgfv56Tm7W4W6jLE0Zy7zd9Ax-9s3mcxUalkSxQQuNmTJbSMbm4EQrNhvwsIZ1HiyqBjIGTvDBFtcOSCumCbTM292BIlysVNNDPv-s51Y4Rt7QWRNm1P3CPmbkfmk1-1yfCqdtLPZ5BNANd10CXBkqXO5M018g4H0YEUJIwWcdKUmiZpHjAmBW5V3mtWMt-V1jkRqHQU7HutvzVy37qmGGWYMApMqWBbj904d5wOqHBmUeDtyBmg-dD7NGhh6_OMu4AeWvP3LrF_ch_jYq6mfR7xTdmXaSYpJtyAp37GbT-kWV3ZTXhcAv88ZjWVd_EqzG_1q3jxZ1lncbYXEEws2SE8P92tVkdlHw-CtnLw84LjbEBhOMho34vNP759n-eamzfO2WLlRaHJ2sGsAnvuiiDRDh875rlkyXhyJbhf5z_7tE0hlZ63vDebm6JURZH-eK_uRLO8PoYz6JR7cQnIHulQSpTFWJgZxPKGBDyi-7AS3Zc0f-PiSS8B9krGhjGa3j3J5YPQtOEtxF7DtYFzdcCuPX-247a29I4MddhAdOLqnAWhvggz_DJXQNYyePhuWC5EI1zT_339GZnoGTBNPjGA-xZPYJ7x0QUxty8phdd5Ky4z6u8l3ipZjSn6CuBcS0EA6h-5D81ktsku4XnHv6juUXCR51PVV-3fXsUXpSDDrPjvn3x1n5_o8wbtMBzeMVlgkEYf9Louu47vudMbfmXbmo-yyvJaEgszwtmfBxKNFp9tMeRZo3Hwv6rg5EM3hj9aPGd5um0HwxxBYRx14my8SrjVRyNf5TSbrsxCQk1_BtUWxVXh8rhgDSBbhCqSmOGMG5gZ0mzSmvF6Iq2X_sLYogQ5VWVEeEivD__8vU3nJRnjxGq5h5Vi3oqovs2V_11Jnw0wMFGSF-JO1Atv2TmX9moyQGZKU6JdGIDHfQjXIQ4_ycbF-70b6x57uKs2fsjQbi3Y8E9e7WEuWj5BxuWv_hm15OCjB06uDcx4MT6QoSr0Qxv9ecWokQxcU2AJHG_o3cP-7aE5-tiauqaHed0WMDP9uAcXpsL79RRbTkMqdoX0MfRbUNv9OZ7-WcTaAL6MgtG-9YEJRi2hqR4ExxSHspvAxYIJ6WfGHCzny-5IcJS45hDjDJGErrtBrq9zmxN7zx_1XGTVeUMmT24z1rEG7rmas_syzDfTpH1l5JcENH_S7W9FjMFhSopj76BhTbkMLWegOUkXp6iINIrLtVCtsVHGNVz6R88-J655AfOqX_7JVOvMPitPBPTqZsUAslROvVycy9e85hp7O3CWlAn6xXzOMv9gMCYeDi5bT62Ev4i_3XDX0dthLIavJl-G0s-CYkluJVtbUFGhIXand7j5V9cDbnijPMajFG5DhvcAqr19ri2WDq0dlOdAjAuaom__8GsqaS7DWatTAEZ_GocUP2ZLTdk4sOLw8FguxhSYWWKcHkXRyYNFGXs23NR-8Erygaf6b7nzEZmzZlxlXdY8AixZ_SahQBRHjiKdasU5SUq5dslZ1My19AzDlUnPXjQwCH3qDccVC-_csRKIOPO88ePiawdcj-c0yaz7UtA-4iNHoH9TmLZahN5ZVCdBglR5T4nNj1u2BRH4WnT-lIdMBU5AnxExuXQnn2LvPTm3rMdMOsp8Gs3LeOHkIi6oS2L3UihhG4Tf4aXhXy3EDCPLn-nQoaugVor3mZ2iPDX89Hi8sCE_cUj3-V22ISFLr6acdGPcXI_M1z7PVxVKIviFYwa1_EMGxP8VGVMXgi-U4nMjyYEJV7npLAc5nseQc-pdPo4sRWDS-075K-zJvwaoVZ9HE_RYBRu6jSWuMxk7qDHHXaCj027dk42m3gF8-BQo_SzU7SXzUe4KviYonb5PspvEa70c5QkeT1lfeYRC-FY1BwKDRtleeZwip6zvISJ4g012LzE-eC7Vb16gwZyu-309XQ4h4vwJ3Rn-ve7sVM9na-jQf1n5i6A32ovVDf4NPbqmHLaEwnvc0pTGyuR598zeEfVy3SSDRllZEeGNgMz8qZiptZUHp_mx-LlJ5mqSdWhYO_s0xiIHmwnKvFeQe4_ERfxOK3uaaZxBcyNyVqNa41vFKcDVlmIes0p1uoWUl42TocyamT69rc4PjtSXnr60xDnJPiqzF6Bi8VSUhjYq7TywnGXPs-emLQo_tG-GI3hjl6aEkpDi2llM56-cgWbCkCPrwsgBpbcOO2uhFnxNpke-8Y1RVTwCi5z8ii9QZAzI_ESSjtiO5wfsA90J8onevNgjBGaothx0CKyBY8iwKRPq4PyAEjB5_oCZVExpolko41VduNghcMKr_pun56Amrtwh3qIOcjLC3uhnNkCEXMvpBAPWyLwh2FCpJxDxe7_SWUEFEqlpHfyw7SANspeywxoP40-AX0E3_PX0juAWAiiN2KasCBiWaypG3Xs4pS1VxVm0eIlp2txwXWXCi3I43-MDq4SOjOFoHWLLwxnihYr7QrmooZD30yx9laLcACinVem-JmLY3EMZMtSFs59QmiGJNO58i7P1PBHT2P26N0QPxaiG8hWQg-rPH8BUyw0YfAC97_E9s8XeY9ijWXzgb9g61T8Hr-_3RZzjJ2SCTrcFm3vTmMOyw7fpoQrKzW8m9UzE4Ss-tCf1rarrlhrn_3T3TEZ4VklYMHztHUeQDNiKHh0DjayC--MKynkaHMVQMMJuA0Qip5sCe1MCo8YoXZVPBA3_7D579s7I77dEPVG5uxHGohrIRqTURT00JZKdiK7QbqzH4F_PgbTqANFXKZl4fcAkArjHtVtEscdZVIqj0Xcwz5JhsH-wffPgr6br393_fvjoQUgESyGxCkFpDqaAKuUYFyEJNO4cLRUIyAkw2sJLkDItgI_yEf7sphVG510_n8jHoYp9p4mfSkZcLLq6SzGIthMP9sSLbPH82vO0q9k7LY9yFdZdujZEqBTWie6XJJr0-m_i3IgDa56sQokFwKviDrl6uCpyYf2ItE-hTXqvtm3kCUbXmZHs6HgmXIwx_HA80idhM7bfzLry7e34PefCnAR7tziqtzcB1MxH6KLo9GXzbkrDK9NC73w2CLtsyOO2b_bmT311o7cnyEVDYfJAjBQw_m2Ok68nomRtZC0yCBF2R7vu6Ju1VI9_2GK_EEZuOPpld-niqhrkOteBr29SzKEcF6cvoCEHB7MkvFqqrEf7vHHHZeKsuv9eDZbMqKRNNwPwUaPebXvu5us1sy-pgxtaLtU8jAeswvrvjGTTM1Idp-dlGAcUwM-As5gurASmPG9Egn9psxqLuKi1-y-61laTYh3wnmg6k_XETk_Tu2sIfvIok2o4Od4vh-I3XZHGqChM9Ra6_syBRJVFjDCXIW9WqQvv37-KKSq6lcy1r-z-bbTppcwBiUj0wixH9Qsusvug6hPIyRT25owvtbaDPNPxnUJ5mPfiFeIqSRPkc9HIFckZN-WQSCXH_XB-3Z7pyxG-bIMBum8S6XQEpxTv1MAvvaGcanSb_-ASfPO1NGTJ1JVx8V2ihE3IUFf686RoE0YJPsnzVm62r1kFT2Ox-iT30VF7s-qFYNJHK2V2ymb8UPyZN3JlBZhoD4lnBKyKm1BFnyPJKWOWpKyer0tqYHzVC_VMmaVuLlPgLt-8iJJGHAaCu_d17Ciq_Pa2k6L1RW_KjFEV_Ov1cLsAtphk7YC-5CWB3q8-ztPmxJ2o8o9tG6uUMqV1kcg0Q36WEm5KXrydUj2KMTFlItlz4fI4mect3disR7n6vnOduEwGnljK1Fu-PBG1ENqqyjBXB5Qqx18qWYZsnROnyQGvFi57jaJo3RQ6SyEfmZYquBtvdC156EEar3BOLHc2RgGXSHxYQHn8Y0-wqBwGlkuAvs52b5xq2Rn_wzvjhCX9g7KF412o9eV8smQcXx2Spi0lEf33_qr5i5kzJCleyWb6z0mrknQSppLgKyQ4esRbA8trp9bCfsWtQMbx7J3FM7NLR_3sthYRzZjuCMnH5X18nCjlIf3HJNa_cR0eVVilthkjFJbvfni6DN85FeqG7cKLUNtZS1EVnBbiDY_-N3nv5yE4eAu5tK2BebjgB2nd0N1y6d6_J2ZecqkGw7DfwD7PG4aAn32wpDVx6wCRkTEGgwWXmxB-1s5KPqCvleGwT1D-frd1C-blUMesqE1BYwgDpBMpGSJj3RXLKWA9S3DnRz9-72BE_6ViyYz3IUqQGNLz5PaSYbl5KeEVePs05omy0fuQkbsHNEM6UGG8V8C_QXoOf1Ld27mrgVGvDrzpyck46lVAec9lUCr2LFuQjDW2DPWbllO0SqyxrHfoKvIktnxhd0Zfic2TLcEq1vsmDAc-h9On4kHq-KvcrumW4-1OZ_iSSbdnrSKpUI_jqVgS6cLheOh9ZZk1IWgAYYyz7CCSbWiYOTFu0nrfT27HHd5jYpVq5kCYKzhsc881n30vNRqop8BrZCBNFPE6ssqIGPVBVuShnKuA5QSBW466fU706iGENbtgvCesSY0x7XBLb1cddCQ-4OBuugtA1szssfZbmVKv7iPK06rkmcNWZfkL8eVYVXMNCOpsE2DlOltWb6ELZND6ktUD_B5a8Uut2y8032ZgjjbeTxyfeiywnltfn60jGJ9X-UCxCK3RhkoXIaYLisrB2wlnWMRALbF3AEsjt9PNP-yjrSc2Znt2rWpjX8kVIp5jXiDzeaYJzB7V5h5xgzPclUg_sxWteajmqnHjaiyubjg60mTduUrbnymCpfB06PwNTX5LIT77-ZcqCOYvx-I84DmFFj1Li56JrjMx0rgDv0nNdwsuv3Wnr9CP42IVYRUrfvXHAqQtaGFnDNdEUA_suyaj-LPhteDSZIXbK5ACpmHG0DSVsSOknVjMNF-4YU2dMLvmd3ypAy2e9mD3lUTdGTtax9uu8fLqxEbO0DDL4uu7i68ViWtDEC7shF5F3THH77_dfXu9sjiPSlSuiqp8PkyaHN4bw36hRfHpT1UJBcRl9lYNFWDxmsGT9OXES9gLGlHqEMtGCfW5Hb_UmSKNt48gfY4LuhPRT5Nj1D0zLs0UUEhKbcYWJDg2sYxCQjFgMWcz9_YQdEZ9LagO_MqpTgfhcJenJ6MidtFpxJup2ISVv5hj6OaB-hmcrjTjCW_gHqE630nUZhqkl0O8oCyqiUpISyrkQljjeEs8QRDDdmF6_HXoYRm3aZq2Mn3Zz6TPlmWkrW7zPd--_nFqOeDa9FdvCf5UGq2Fl9oHiG3_8afc_NbtC69n6ZozpOpboRwJdkHJDC12hZ8L8xOi-sSeT5R0UF4rxSX8zpeCQHdjhqEI_n31WzXk4UlXGisLOY2_jhnSnF5neF8BP2arhnm6yo2-08ULpy4XqnhMphtApkEQUFnL2bn_HA-_q4Fylv1dCEqcLMc4wAPE7EYyJJGIupntMXOrcSEf4Ch7VgaJlquItOgLPFGRRPjW6SC1fBtggtans4PDdsvk7OtI3rM9Nu_WKF_rnyAIQvNy7xBrkm2V89jfggM3Wen2joqVbEoQT2mteQZ0jn-BMpsyaK0kXcFi3MhJcdyKKfsyv514eMVq33krxMKx9d6RPYM1vTp2NUrti8YEuFst-8FMq9Wj4p7UKlVtygg1j5J6MUryadNkDTqxWz-DqDeD0DsU_B9x1dSPHLHjkHMFW5E8gYaF1THbQmSMSqBA0eIorh0JNyazKWSOFwQwPEaH_26pO-YcYuserS69uGN6ualJMFXHvi3xC9PtP0tGcenDBiT1qoN0i1d4q0z_ixA-dSXbW92PsjjZ1jPYGxwdrs0N2fptLxrU3HT0pACTyQCXbFeBXv9GUttgT53BEycmpcIFtQtJ1XamUHa812zjI6Wv7IoduY8GMqJBns8TlAoOEoW5wXy2p5VzjGwfPX-rKxzKarRpJH9RnlgV2dVT7hv4eRMoIpJjNq8wtwKxqM0MPrVxHwXpqSLkgmJaDswsrlR599far164s2XBLbRlcQyPSQj0hmer2SxQH8YaLp7issxo2r0UKZ-1R5uhY2hQIhzzg5FD8tJ1M46bB5mhW0k_JNMdiZkgD5yGhLOcI70ghu3rbU8gK5qXaL6AHjOX-tFdf31NrnXcyoUuW3DJByjrFRdegO5UqGGGuZTosKaB_1DNUlAaMJBWFxyqhy2E8kH3euAVBncmzRKkiwEiFSOePuceY7jrHWVSwXMINhHJH6EerkCh9iBnKOSp8KpbLoFMzFwv47gkUfJLfAmbaLSd5KVJxdIf6DIRjdxKWIX1tg4FF7et54MhmAxS6oomgDiZHZGxhlkNAK5dAZTWnmpBX62UyC71v45OBy0l18FOLm4Pb83A9YXJE3hDoheGV_ow_RxigLhsgRayfVntfpHWWJjL3igJCaAHR46YPcq4kFKpQ0ctRUyViaeWSxALe7zzTZx7YNFMLOb1hED7zqGmMk4YOYCEJ7ofYFOL0Tk1fXfHxEBbIhOoYD4opZLedx6a44P5LnLRZ4gIL-nav8TKXX_-_LZThJuGZdnhN8O1JjYb4-D9D-NRRRp5OiPUJJEL9vficKheT1DUOfvSsTgHHjdtSm8emmTfwnxD8Gequs_Yo7_CLT-rtowYN_UYdPsngEeyWlzDywX5H13s3-uw3jb9EIB47lNpZWSkGbgX1VeXHMdfeLbwfo4PdFBsEBajURKXvrfTaPfFUKgJZva3nQ3SRuGlD4KwDrgmHa28dVyzUTNrnozVqks8ZOf0GPVkFx3QKC7gkGs6GZWSIMfrO1Uuwb18hqzo5FKoU4OJcbBpUG9seQQqJEl8u9gzXx61STE_M669tcB6IiTFHYZXicliPMZLPbbKWFzub_CefVQds8xW9w4DB9yGe1qbjKWz9VUN4N1V_BXfLJvqlPVPWId3Igcx3yNrnD4_4ZNVSeM7x49hVbeFVT2sJgtgRGGKTIHsuK_SlSHg2n_epIefnbjyrxD8fOPU4hg7A9NzQaw_7BaBz7PVP8LAr2BqYNiBcUC_fbqK7aA9LefTghVb0YXzhO61jjPVrJfyzyCURlJPHs05NM_oILg-Ly3bEV_kSvqva8s-7I2UqK_3vx83iYlIcybpfP9EMCuKrZJSh7imqPDnz1BSC6wNu37QbVw-IxeXbO7tA9fGAQn4UcL0nKpeSQZxobDDDCEQF5P5PS17DhGNassnzK6LGpaMR8p46MexYmnSYH_YMyRphjKo3UqPhBB83RlYptJfNFTyfjUquIe2V6aAIeeEt7HSEk1i8GCCYeteswDtEtRaR8NVOjba8DArYzipr6ICEzIZ_mAOgqEn_cmSRsP3m8eD2huHB-dvLN9FkBDZ71mylvqzW1fu9LsyTCz9vC2t56QjvEelmtpbFT1A-cr9eLkqFzDesYWDDk3UhILC-dlqk70XjiDC6UPuNg9iERSupXTzFHo-MGATu_ZDrOaJQpCl1P5TYq3km9A_ANb-FmTEvk7U4b2tSmt2NnbqwBe2dvctMAx5rPrcaAwgzU9ofqxkfnW9k8tirA2-94kd95ywz1ZQ2fUGjFIkk7pb5C3NhmjvvYOWoTSj1EOKj1Dxifki8y_d7_Bu3nOI_4FTut1l62K_H9-1W_WdWAXoDKgD4bOwCMuvcQabTiJTv2g-PXC4s0mZsfcMMpalo0nMd5vLs9zS9_zfvoReJn7vR0ki0QtYZ4RYQ40oqj5w7WLlntMsu59O3ujBOcMOdo5Wq63HhG6niC_vDXXPrOy-kQmCCYSfoNzINtWUzjXgFLWVmIHDStaDnkQaPfvji5ScRdDnZJA3uIcVs89bMZC6uQPN8Ssyz3KRCeK8UY1z3Gy818wjyLLTWqPa8CZI_H0j7Ces-s_58LrqXeujhvKSnI7OhETaQgq2ihaKq6M2x9riz_y-CloXHA_evscvimD5g1Zy-5S803hYwkrKtnbZ-5iZEVlM98Q2oM-sQLLzOaQBev19cxTvmjFM1Qh81O8cB3urlNARgjarDcETg9L53Oxese_auFRmx7QQnxs-6LCuvIxe1QcYhpkzZyKexjcyTo8aTQBd6v_52FCxhGzl0vzUjIF_xdjwaCO9_4zfBrZROgYNsnj2zirqfbwqssNXUg-vPOQcxBrCiZv9BnHWOQoYKHFnjVSx02T-PlwR1vRF2tXotNowz62B9-5w_E3g4z3WlJrs6yt6FiNuUgfXmBkbA6kkLScgWl87qDu2ZPnVpJEi1Q2sb2eiftxIlO76zERjY5gcExt7ySCM0yAvEkWetjpBlAN2uysZFZi6nnrpY_8gvze1ST0x97wx1hjaK6euYFJap1pBqbpLshDhgkifysS0n3U-vAcfV_LfEn2KAw4bfV3UUj0ex2BKD2nb9bJBUtVbokFh1yyUpQk-IVRVnPBJ1oZuekOZc0koGoIu_OAPUghpBxlCNDAvIriqLLlwgyVavluxznvSvzXTYtK7MFk3_tdbdBDz2OF9NWgJVou0KqUDHXp0IdUnm4RaacO5QUMez1we-aTr4G_FvpkJ9FcXtzONx3mmfMEU1Bv0bATpkZL3NaYZOZCg-Wcv8aIvrVWS4fdgKH7RkvhRB89ByCiGsrbpD-uhtIaMYuiIncMiiKBKFcI6EuwWDxGXcOV_LrUu42hw-g9hxUpX_L4fKXPKiPAeqFlx-Qh3Jt0IodK4FEhftIRXj7QKch3Em_FctwKifYFQATbDCjauhe9ve66ykXcimXqKICoW4L0wtBhK87r6BbL8qt3z5j5S1DaTo_EnvjsXzqPfV2V09F1haUajeQqQFaKeDupnA_snmjnl60nHo7BghKqzh3ybOjr83Q1DpYhxnDAJJpZuNeqJeJ-rT4FIukulpsevwVUhgzWW0lvBUp3wteWqb86Gp8MAplU3Y9E9Pf-FNHtVD0rtXF7MDws8T-Qrv8L7hQe0d1Wg7j1LqgAJVXbWrL7JQdjjHRC81vnt6WlX12UF9U7LpNK-Gr510qHyFd1s-nHfsDgAqprn5nmr5reSbIqAeR-9w50q3pNp6mj6Ei3rj7Zwcih_0Xfe9nSqfoyH-7mVqBI62-medQK9lBrV61QlGJvZgzaDPiRw3DWUdNgVeWw0-pXCeOld6UuZgOQhmQlE42eUEQsUOD2fr9W3WywhkBPS0P5P_8y4mSmjCFb5KNgjJjtJ-I-5J7E0dpvZ1PSpQ2inQ6A_JfTswDX9cx_MVJ5xhjVHOopvCy9--m7agSE6eQobSC-hUA_s-n2cUYf3GtVaQY9zjetLtXzx0-AfBSCxh3QquA5X9jbnfeHx77NWNfRc4nuRTNDbVjlfL71eQXRJ0Ew55banHSqOdwC-zZGrtYpHgXparoO8MWKipTjI-qVg6zs3nZTcAwnb1im5B_URUo_Wa6klgO3rk6td8T9uNwgCtEgm1Ai2Tub07qIW__T6UUGSIjwijrVm-HxlZdYPmvdKspFDUEZdKh59uPiuQsQANVjNq8uf-EyNeVT0Kenq0KamWTd63RwIezOrkBw4IXGZ19FN9wTTS8vdZJVIdyxR7akgXa4HWgAl75wNugBPOTmEGXYgSKYOUXyFgqsfEH2JuX1DZ8goMlmroOwD7DpexUOKDNAdyl71GaQnfJnWUD_nK__grI3HEVeGdIfB0jHSUPBsnxs32J_nzhhj1qk3NKDBqafR7EuenK_RZFCwEf5laD3LJuDdVRpqKYcPqwNqy3aXpsvGDmdJtfYfnBlQ8gjeGfmrGwUSHJMO4DgQtmw3K30qKJ772MYd2ksBLacx42tdhYKkZAlGUD6o_4GyIo2SPLmHQxZJpIFXVczmIEXKKgazavWjJ6gmUK4sXhDZRHv-yB0HQY_gnjQf1agCol2lsPo9puEFBNnW2Twe4qORLnq1faAYmEEAf-8aeHmKt0rZ9qibL6e1e7DdOOnD48dHnDt6pt-vG-rG4kd6wjMOsuqGaeq-m1VRsn9tbtsk2InLGZJGDlRiDfcHiYoaD3-gNppj_Y5t0ibTk8H0uyFu34jCVcpM2TJbBc8CB756mVSh04RDe96v6jYr4U5ajsPIcKgfPUHITdJDX5q1QlOTG4WG4kW9gsGSQWZ9egEBsT5yFhFE0PUJrjh8kJmgtjLdpXqdg0_ngZr7rRQisSzJEOVaronb_ZeJx1Ae2c9O_rbDXr-EuJFVAL0nV8_R6kGH-rGkyUVb6tGxHjXCDq1HRRgQqo8e001H_Ke9EZn2aEX-8u4n9utAo5RgqtU24HUYz480ZWIMUGkAiFzR2pwgxeK5SdqrDQp9zTPpUIzEwTPGSuu7hFjAZAco4cuwTa5lkK6drwJHYGxTYwNloo1FnV6819Eb-N2spwEzIspBhIFB7ACB-QA00PI2G7EulOp7Sz_UZ9TeFaM6x50Ju6ScvNXTbZSlc8efmU7-nQrfjMD7EQUJ97cdYzvWVnsXVQUKoSRB9LFNJXcttO3CLufFJeun2aNIXeZzJD4G5-SAc2ozbvNC4OD0P0dnm3d7mGWlTcCmSI0myZE0BogQPkP3IkQyquNhebZcTGlbimhxh0kHfj02_As-GqRsOaszQMm_zClzbXXW4DRmNavPyVjg2UmMHEFkZMvECzR_Akv58H-3S21Xkd2XsVKwkq_FaWLaBdZWWFr0oi9IzAyKzYiUb8iUDS30vZxGtVQhAircbFogaEM02pqO0twkpjxocU34c9mibyoZdBfi43NJZr1hwJg8XzG8ta0Unq_zOldX4STsX98i57Xf-x5h9oc4VcNETe-8KNf5TxxmT2d8ufM8VgrKpvOMVaOz5QCKCcNKOIJo0qwAD3TXdRyRkT9zvF_DyeJqShdMJgyi2j9M31iBdI_kQ71B8dsBPmSCcaXhLRE0gWQ1HOONIXjf2FkVwALa1TuL_HTrALX_QhxX1ips6SHeyhlIZP_off50tvi-nL555ftDOp9wVdlZ5Dhd4E4TsRPRkXTOVM7dQAVneNklG9jeRptill5n8RGJSgFfE38BxDufzhaPumlddxVb5O0qx-duH29zNZiwLSVlvpzs84Ei_Gg6NXStD-_kmG_xfRRDzjMUtPVqVGU2MATdiNnWsCiEMc2JMjQjZcoZD8uluqW0C5mvQePmXNayPlUU63li6nIwwmvMC97JJ9k8CHbXmAxUtxhMM4-qUGdRAFyy1gMFVQV3envanKnBqMHBGQP3LGe-bab1UAYfEBvli-JgDagoQ8VSJb-tyxTa8_mXBj0kA0H-b7_sfwM1CmKhmCG2Ee_mPgA23rHDEDMv_AlKWFIe-eI5t_j9fQyXuI16ZYjavXs381lebCzETlktOf6PwUXfgq8JuKnD7p8DyxOEBKoJCNTT8joaGEMlOB_RitfjHZ4CHQy2AcnggKAwuH_7UrUYFdG59JZkoO6Qqem0C5l_QiiCD47MMF9v8ZFoOAWjNWlanwShRYFww46JMRT_ZpTuxlRgMDP8--ivO1WcTeq6MLED1TdwQdccTEQQ2nlKlxpphvXaTWBXKBzREwlO8Kl-g1RHNkSt7LySYEQm5kHXH_RkfiyTDPCFtiWwVkda6T1-Ud7zcZCo438Ih2lvoOJNASxmBinK_Cf5rFil0bRh94SuMpeBftuCNW4W5pcbDpjV2XVWG7rxjvb_3Yhsq6DpR2MFUR2ExnEMQWC1iBHlVa2DO61um6LX8Mi5SA0ax1QJethaPS5-oBEBkTAeINVz0QisYJafVH-im-tNnwKzBlvkklSQmhsr0KRqLRc-xSZd9PvCvrbPAVJtifo7Ml85T-fspCkSw_r9cKqPOvFFPCJaUkSoKfWOEqzOvDuYMSU0PX3skzONLM5Su01x-g4fS0j-VnB6NGG-I6ZS9lviaeAH-PoDch0bxVhBSFUFlITBPM_Rt3sg1hLLt8f9kAouP9C3JNwGtHKLEgrQ_Hquhsj3HnqtcQd4bfZkllFqtfh-_UyP6VvW8H5RZy9fDhPMF6KjZUkAPXTVLWVmkpz9DUH0doihSHFo1460dZldFkfIynH1C0Sjiinzrt8b3YturqYGbmT9A0ymPA77j3B_wGaSDTVJome-uOgOCgZL333yah0-308isO6kQh8SGIE5oIIDeUl8r7V5vV5PyCZBT38yAXBSCTxCE_FizAn6EmmKtlciiuLSXDk1zFtfNjx0sKUhmzCdhiGwWnWzrLPCA3lP6vWG0ASMCb7ql-kgVfrXWn5xe4hR0M4DSjpHVHWqZc6mk_TY8eGrohKZOEmuFLFoAmaUIXeAgGD5xwsrxRVQojmDi_WQs7Vf7IpgINVDBkPncB-8rYhQ2WvoArNsXZFGcdNcZVsD7B-LaDPgh9ITxH1zerFxJ2sbaPZj2Z6YHjqjcRWCRhiFIFlobVWL-xErq0YTi6BWMsDedKisO03rcVKWeSpZ7dXiHW-zK4v4mQXXySRQOEjD8_7QFj5hoT8AihEhVekc2zZav2qqHx_DXtOQHNTCTG6u_dtHBy8BjomFtQUVsVpYGxgRwEtErA9u-cc-laTaWBfm9ty2eysj--H01Y897L4GpVherHTKS1rAMHeLkVV7zTHLOH4Du1cOhzlf8HBEhGyE6VJIuxwqRf_Trl9wnMArqv9PcufUzZSPoUK3FlkPD5ch-4HqSY4XxzNWYXsL6S_zhChqBJ0POdnG11__zUbIwPYoxVt8_BWMtRf5wB0a6ovMJM0fwTOs3AUF1_zDaxHb2p3sifUw4PYDeXt9IU84aIsvnzMKzkY3qGPClxEego7m2iZ9ICQ0UcyUdkURa5a3EDJfIOkjUjRGJPXDJIBDneyDxuzltSZL1ZNzUqXKic7LtWA6zr7TJBYmXXlL60kiaESkOKF_MF6TCMI7rQ_YOu6FJJ4laFSyNMSSpd8eeCmLDmg2sCJuxrNq8ysH3rdshn_hKkQE3K8yfFZcrGL7diLRMbFZOPZJnvgaqwbuWYAvitGZDDzOmsNOurekFFYJDYFXwO8PYAPwrLM0JO8YQWJocF4X0MXbaIQ3uUs5yQ03VRoU_2-fcazRdBcplDrj-AQwY4gAn9nsGWzGD_nQ2fnjW6w0GP7lAlol8PkH3qUBglO0Rft5V_MdMD3UBIZJYnjZy4SntiM9ORhKpY1nwQqMKB9UAvEgUdeookvrqd_m_aOjxPH86dEjjuhzN6pYgf4xBCoN26FhuAPda8FEJp_XcQstlbwd3faQthOC9RSAbKRQaLPcYW57gQG6Leo73GD37QCR7hAOmdyIrBVy8ZfFSFIk8JPIZgWy45QKyDyLU9Qp4sOXfxHFlgG_-d-uL3lH7GrlFp2nb525yF0aIDMLE3Gvy7pKIumg5nUeJolteXgnzWoAVBd61b8HNZ4KYGc4djqAnY6iKA2qDNbwI8e1SiaO-FiOjWJ3beqcJUjs-gLNF_bT1sL3f_qg5qbtAyyNkvCQ3O5Fx53htFk30AaKJMyc2Zis6UkhO00rydthJczMgSEsIsri10izFqj-Ey4_CzAAjR0JwbHiioBeAI_e__hKHbWnTs_ewYEJl83mv1MxDIBbRyerRL950ubZ9l0yFnCcBe2nsW3YPyUKgsIoCW3CG8WvHpKL7Y-FMnLMJ4Bu-2cHTsAFbIePIHnzaa1G9ETAFj-Ppp6cCFukchmgIi0sQLyuJM1htVamCjPyIRd0hj93zGk22JUqSwNL_eGefoV0KmRvoY449jP2Dew7lOStUiCOZ-sh5G_KxIYyQ3JbeKwB3TA7vYQs8YIf0kYECOGhIU6ymyCxKOQQzjg5kwcG4rxl7kxpuGGT1avsp7bWVoUat35baHDjGdi1N1_ZB260gqJXuDTPM1HfSub8lAp2wRXjhyAZY1bfCXUPVUfPkQo0x1YH38rEbKnLAynei6dZ_tJwsWsFosSiwWV_5Cj680lJMlSI46YnOzyGESDwQJV0o0lJ3e6Q5TOEn1Z02Gt9wioNqQuJrZk9M0CBPIeQ4VpayZ6RsSgaz8wVpTXiybjhRXGQSWO55zXiSutIqlhcYy2EdWUu_g1p6KO8xZFKoi1Qbh9QiQLN2GfGWtYdGhltxBUR75NEpV7godBKcmXpV8IySdUj95--WS3MBDQICnWCwwrpNfwhGlAWBVrYBU8zRhCoeKooFMJLQ7w45CPAnlYJPWReq7RlWGuw4KYzaM21e20RyjGAjwFSp9T0EZl7Wv9Eis0l_KiVZtAuSfXSRZncm1-Sucto0eAKuivFM56a6MBoKX9lGF0sIK_U8j8m7W3G7XmnNnTZAWDECh-PJbAbC8PNRtyyD6-FBOEX-A4dmbQorFecZUaUeD0MKR8-voUzSNkBkhNIwjX_ZZPegnTtSP1rRydYkl5tSVJ4NH7QfiOIC8qAEsXj-5odIIOvED-a1outU9vz8rN0Shu1bNl9gO2dFPjRGuDnPp7wVEoI5m5jAg3fqgCEKSLW8AESEjdcnasFZMG8wQB-MP6dZUIi22SZD-uAIhivOyFRb1HTSLa-r06kWbari2hTdWMubtsNisUw3zXS55_ccLp-Ya75zTozQFKi3UBnqo5m6JLO3ur0asaqhHgMa5gTmSwCgzyLHjlpGuUVoq4Q28ennVLf9s7_3aINEDJau4PVnniiE3NFLD9zxpwWSqanKkEswC5LD1oFcEFUgmuyrLi4IP38Y_NQab3dQuNEaFGrYNmBGbfxFJo5ETlibtC3dJ3YUIXVApTvMHZMPrAY4wC3l6r8EAoZBgToVRxmaa8nljiR3IOiLeSpHT_GaSmVlSBSslw5ggDbPzaHKJ-kCR-ZNE7bltqlBhJyDzu2FzggGbqkPKNI_2w6iYdW_CiG4YlF78rtyH-GQtvTlFWSGKKeiW-QMBUTvWSe2Ae1S-H1xYczxUwgBhZ_KY1aZqtfAUeLMTWWIltKaXxdfZVNzk_wBiOYIlSBmvge8ZCFELJh_gXwPFwcsFW2ggaRoLDrEUUUCYeZ1vn6eE4VWKjuaLFRxYJCl0EAChIa0saBVE1DfttQtipDjZBbblPCPnLPMQDdYc2A-axI6VXeJ8Yk96nj2GJiEFhBX2_oCrxEeUaYC1obiIhPDavILIKdaDlkq8h5N_1KLbrWR9ZyckjIe3ekNsz5nk-R-M_hAYB_5o5CEaLG9TfZtzNY983C9u6XAtOH-mSKAKPAJTLkksFrvndkyKsn7R-TBSYc2KT8uWHuFyMc9PTo01ZUijnLADo8Ns85Kgqt4k3XrciuyTqLy5zAkQ_b0JOe6Obxh31ny6UJX8NUUfqP3SSLZuceeFHcccMo9eAyPVYmNE9_kV3GE7sRFFq6zjldeyEwBZ3BUiddI4k8Al2wg2Z9iAdfHx9PeBzrNAGMthki7HkJdx2mzCDYl7wHzVZROLwge6gBSxMKuUsvyHbeCSox3v2fJ_Ph5RvSEFq0Mg8a8XYxOlNEZgRIVdonKptYxr_Pn8McfrRMqvZNsN4UQXfV_PwpFPqkgSi-8l10uRCPUU_h2sWer9AuKb71ZDZgtfg0-ZL4JSU35OCpI5gSvqRBTmszEAVRkB6c0zTN1_GrkdoQUDz1oMNofpEWjExJ2cjucp7-sr5ke3O-ckFBQySBUQXs05NcdI8G6rsWQBr_MTaVb2D7oZwCzYlcvHT7ORh0eaSTguK-hZMEUZY2rHtgq1_jDt6ExtSeN1M1AyYQcitUgXDi2WVZgTCzywTVs00kpq39M6QiQSXdVoI2gaSFb765MCcS-x9Uz_A8n-P09KsImojY99ZCirwyEe9mpB9IkldVnTnfI6ueZZRz-jmN33DQNgRJX-4LHero3RT9ZtPKO-DXev1QPE28evNWm4ocv53eb1wqSwUBYU81uhHjLGA6Vn9v7tmDzHuzVBUb5mkQ3BSxvhcc-6vuEdU-9NDh2_zuYfc--IfLb_96j97kfWSTGfH3MxXK69V2T__j5jhznldzRpx2M0rTDUYDEeE6MAapnQ3JaqderR08gDzsOuuWD-hyeip2Jb8-Ai4t_V_V1oRBB-qzJRBvHnDP5LrcfcBjxXkxSr7GH7UDKhHJjo1q94V6Bb2W6_7ThR22f4C0ro3benqK8vWr_eVrZKmbUzTK6l9H80sMAD1-AFTDsII8NUf3wXEpFcUUQy7RedLA4GMdv3VdYwQP-guV1XugRHt3jEuo0-pMCWWx0U0CBQHHpXNPm0UVLvxDzRcj0mVs-5CIUfxZHj5b1QkHqy7Rq5hjTacCJU0v65fEgibwlf2BGXAZ4txF44kTpboIvQ29Myyr33VBrII4Oqx8IoXJW-lGFiiBG5EruuxpKNkHCaQLbu_-dqvhED7lvqXd6uC8__o410YVagnVUL_XZ3XZWrZaibratqCrsDi_5T9tMXi1H8PO6pLR4CJR1rcKAdzPnuJZP0roJLrw8LSgKcCzE0zr6YVLzaPf94q8pqYAHM3Ehp1YqjMIPQQ1siYKe6n1C5mqAPfjpmQ2YKW0Hqqi5l05SPn8vVWDjf0OBoihVSxneoZsXXj75qrDI2gFk01z9m6wG6I4-hI-k6ZpikPw4ay-lbs3-8tgZoinDaqLaRp4TN-wdoWpSV2dcy5cOVtG5B-Ngv_ruY0G2KDgpCUydYbFoHpCUY90QfegQ-7AviSqAzx3KYb1EdDDI5f9OdOaZBbTiPt2G4ucZnUIvsQQ3KRmZBwA2jlgbs9NGxeFaxZ_-DizJIJgmIEeGRcTV-rFx5eSvwabiBcbCFZKsMpvoiQVdo_AKN6lKHqVfGxB7oSrUXVhGZH30dzdRJU0IcXEYHpZdbn4PHyIzJXjQSArzlD107Dye1c0LitjGoSxwo3mdeQ9QMQYbkTo52uQJ9b6UTYgWBFC6ffqfDUQtB91v40eCYvbUeHTrhb-EWGlNPIVyiJKbAQgWjcgMZnTOjau1w6eH1zmvDvMZmklv33SUyKmiYWEK2BrjvMiB-IhMnLYp7D65dtNZFqcL7Ga43Ir73uDtkOBplYBQZeHM8m67nhfCREvNfts0vD5v-9xheHhi10-11POmc3OU-DMje-FS9QcIRsQgBts0bBXRFmngLCoh6_w4AHhdet-IrpftU2Q9NdbcBDfFkodGRN4a9wgwe_5pIEVuAyAl2C_b1Hr02xhwb_VZ1-sz3DMnaNyP7Vy0e5Ne11jSGsfya2M6DQhC4Jdsne5qBA9EzOtGIeqd_VKSnUnHnn14gZ6BTWuCHyfcB4FOAR2wblFF63ZQJ1mkEPPkfpdnASAnthBCHloPz7le3i8ht2G_w7NDuB5NNap1n5mpnH_tHSrEaN9B38nHWnxsjbOLhjUpND96l3WJwmfiA9ake8rF4aK-dImD7tTXTSakZt4NB83fJsAFiWPJhFez63o_CBicLAbebbBXqAaoWJw58e1s5ptaC4US4lOxCByhbXpk-FkUy6wj8Lu80ey1TEUOSp-TprsUSUa0XnF-lkmjjc0T8vtmhWj7uW2RLEOl22weQ4MlMIx60fd70fo9gnRfAYCDAQ9Uixzx-Fwr9UTr523RaxpvPZvrAJ3JCnRyXoFVLtdw76CbSIPwm_i7LptBGAoQLMg6i3S06hwkQnoKFIR0Ox0CG1P0Z5MDtrCn6VNXqtQdtvK0OCUC1_DYY2_wPDFfKMxCrCkdJ8vKmDySaZ2zkydH6rJEGiyy4LGfxAOs9v7wY4K9oTfwH3rNBpcvRYFaoucQVu5hT8MQloX6Bk1V1E35zx53wLGS5UpdUXFiSZCqmsOEJfB618eD9ssxHMkPmtFBJXTQ89vYiAHQhv4E64ng66yAqi8jTzs_sVnWZAHJ_vo0FeOPQluzPcA7Cqs6VVqZB76EKYUNmCryfA7_ONdEbvJRmM4BZbCAGAlR5yjiy2B1PLb6XcuUliWehRK4zXB_UQHTpWlvD-eTiR0XWb8ItVsuuFFkLIKlplsrqbMGB2FcW2FsQHdEcypqXtF5h8ecd5nfhl1YmKq0zxv7eHnIT4YIKXdlR4EkrOrQrQkN9dM5zOmPGUh6x8tDnxREJfLLf_OOhLz_2-pg-3-BMzbe496Khj-VNIGT6qzoUoE1VZFHMvlWC2kNp7QA0eYpbW848X3-S2YNP7RZWXLCSzcsawv0tHU1uNlsxBcLsjDL-YLDDE9t5YXbwAKI26F3Qjo3CBcXexPU0GVTcPs6tVLAVgdgyfBGxl70ObZNtIfIkveN-qy6a73CDnuEtHxiYSCX9VNALuoEVby3UV0bN1P_foupHyYZ2jlxlK8OpEE3YLnGnU_f7aAPDra5RXyM3CUth0vIQefWAoRdXAUCHXPi6zTWgY2esRpSfUsbJjA4_tnxERnqyXyzGKg1SHtTCOb3j980Z0XxPDCPWytnR5c98JkWNAEEg62iZDDPDodBqIYq4SDWs9Nmnj37nlLL2HEjLWY4ZPU82BY3yo1QKim17guAjZa0T5XfNh6v4f2VLRJdVwDUBXci_KoRbSD1L4ITbDFN1SG3Y5twQ-1jd0WQbsBJgPqGI9Bh-fT9ZgyDx0VzIC6XMawHuHxhzhlMgWYBQpdtXfbFYIQbg7j0ZXSMiGdrpyweH9hXD58gu__TuUczJARZlnUQDOmV_BZEVP10qJfym3bEfjJJeCGK7DP97z1S2epHc8e1K0hEOfolm-jMLsFoFYan4ynZtdgXAm5Iwdr-MStjC3PfPDlFjvsyQHaNuoq3fxy-aidGxX3M6bK0sHTFa4o57LYfPc8Ui7DiYaM-iCQ5a8xe72OESA6UtCl35A-QTRBBGFugNaqkyUqo9Dj1KXnhBTS3FKbFVfPQzcSBdstuAAlCTIYeMSuunH802cetWurYYGjuDTu2FXkboKZv384SNSJc-dF2KYQD6X0J7zkk_qAX1uB6O7wd3J6A1Ld6cwqM9miDr8XJCOGOERwQ1HyM0GL36iNUx-oPg7G2O_-UFp1Nszv1rKm8_9R9U1Sn9l_4BMTx743CpTIK-LIR7vPmvKKvqZUvuHmgZNIF-CcxAb308rFXF5I5swbSuSLxGgVQ17dftHa0uVHxjxbdEwikNQOb1tNJklzF3oXs9WN9XB4Ay-cgH1WRP9VCF9p8z4vuL3M254F8tCADh6sBvf-z-iHTjESVFiYcMAGwUIIpJI3065-0wCQhSrCv8vtJahAJFhAKrthZbSxlPT8PX9ksxCo_BSEyJWmZC0Dxj4iRTJAxSVq-QQ09UObXXf1WpujuRGt_zMVEZJk_viMnGozbt12hhYS6a9P3B5m39fX4IWDbBpd4E6wG_e8d_nfPZhY1_nEeEcG7s2f30j5psyvJ91VR6uCzLyo098dhktLG0p-bS2Zs1R0rIx5Wu3vNJmeK7NR9FsNO0vaxfNVlAWsLwQLb7j1TRBSn17HWu7Z-hxPYxz1NeEA7kGI6k7zQ4x_om8ypDlnW_SK1kg1kB8vf17QB7hR1_wkwjOwcEjANlsKK62tiQUxyX0kPwobd3c9C1htN3dXYbLGJgH3dOHm34JACYqkaKJfQgdH89g4vEpVPTsGjvPuF7xrK3EbSCDUBNP4r0IfAhHh3IqF2w62S2ehsysZsUuYDyRLDWSEn00K8Sk2uaHtvrEVKjBmW3AJpy6RX9feqhz86qJES11vYueCpQzT8nM5jSTCOpa2zRU6Jtl0ILD16gu3u2Xh8SeeKvjuz6grzIj5L773VH9ptuB7Jbr3cijDNCgLnQY8N6RWIQD6d50ZplqvpJYPDoIbIMXGf4PvePFY9Ri4EAozqoJrXdHxyxh5I7ayKEFDCHpka1UaT5raQmJZUC0CZ5iPkvnFlBIcvRBjzgWuw_JLX6aI7VITQHCDTJrEcZhV9Q-2wEqxbs6orNpXIlZZjLN8kjsNw3zcCw7xd4wWALEXRswipdINJG0hTUK9oAzx_GDVraloQ461JOHaDDyrT_CS2j_xbBsw9igkEHdWA1heZ0FIfMgrOTTFig9aVpatIuyZyOMA1aoi-kSTKRMmqYbLqh4vAg64Pgekkr-hr8NGer17npaZPpmHx7uZtMn6Vv-94uJROSr-aMZ_n9ppkAWa-YFsSxI68haCzoNP-z4tYE6lPv3Wzwnuhk4lJ19kVeYhQkGkLCLs9inRMfOX6iu0fUCie2FL6T1wM04AdWbsCof8--WTev813C4Q82fs8p-Wegrg44cwX4k8FIXEIyskMRLQvWQF0OXvnpzQPaxkJypKOYjKD8LDB5-UEVTShvLqBvkE5uyojor1FiB3tA7Ly1fQ3NuuRgcQjxxn4U2TtfKm750EjLfzCapNqoo28_Ipqm4rBBo4P6xRbgj1Aa1k86RqLNs0dS4l0wYH1H9T2Xftemf9gDJOF6cSgmpY0fWwBRNNB-TIJse8xPw-Jrl-UJbc_XW4Ovl4W2TCl65PkulsRnMUf67tWr3B4JWcCrrQp_vgTUjEinXRSbkr46n0xCllAlFD7jvBlSaS3wGoiRnho2O_rhb8zSIrf20fnLqGwmcxwChIaA65suqDy3Z5rznfXP61hFxfUFq3wzK8u_VVDJy1uRBxjmhRbf1u7PQSJHCuGUE0d4sYgXPz8B2Jm32888TAEqT6VNforglI8n3KcKaFZmOH5agZ-6yqO9ngGtkFoHZDiZ8_BOJ69_D0TtnhwDbfU2AVV7nHvX5oW9DITCTBZQ3HJfx221XdLPDX1F8wmq9uUNYMfa4_fAJ6Fisj0WFRo49Zy1mh9uS_u6jMOXEqwEsOTnnbWq1tTHqbzH2Y6VenurhBUATZsxBLOVt2BRzi_8Vo9k7_WyUGSdjwt7eqRYEinWPrnHTbd9jl9L1SKKoQjweTZPfgNzmgj8PmaRbYxODLTZ83yInySTqirswYfcas5XIl1iZU98fFEEMhcrNtvPUHlQr5j_sP_xctj6J2i1fVvfv4ZZxH4-r3vvk4ShN_zYPkIySDOpNWwSTO-yWCsFSdb6ib1n2uW9PGAUWAW71mT0SFHg_W-FomXARrvIz27uM2V2bgtBvKOnDGWqwobZDQ20rD1TVQhWErlijEWW1I7wZAqwa8NlGNtJVyAWejN4soyOMcVGZdrtcYa-9qYoQpRrevdiy7YG2RFLVsJvSvUYjQL5aPojFowFDw86nez651ev_vLaig81g0Zsz3pzc9GCs-i6fs2yfB6QFVBafnzDbtMWAWZUOfl8hc97_uU5G8qQMnQfZrhA8mVuLr7iwmjOYE94iwBU_U00_sQ7suvxRlC1rhg5AEKxPsAm_8QWSdWDdvMzuUJYsZtgAYc2LjEs6rHiEVO1TD1ZSAgT60KQAV9MnFvZ9fvD3JzZrY4cFR_7iNdZO6gZswpGJFzkPjVMQubcPIRjabBQP0lngrviOZUlMfF5UL6KtU2tUT6v7SRcVy_DePEAQbWrWGeEetCjDX2lsPpYOEEwoSO8MKb1u9szE-rP-r-miLpnVd4EPZdFgN0Q_ChYMaYYPfa_zeMKMT7Na-qU1pWNCF8-cu3ZvkDni2JGFeJ25c4-AochvWCWwU38OHsJwxUyc6hCtX_hf5h4uj5pFXBTS1qp1PK0OUOzB3yz7cebev8PQYlvtbU8klbA660dIuM_gPnM4q_QRIu37PKsHn9vZ737KRbcg4eqTt_25v93unq-1hPEXqjHUb0KesQ7j6qlq38xCrTY9qb-i8pzXNRpdDKsd99iqKV5YAaH6nj2ESmTdMB5rgeSk2I_uGCNmEeqrnICzc8b5WPcgUmtldfvgYBmZhKZTaOUP3qQfjSV4Yf5GuE16LYfIb0tu52xuQQsQEWjf1wTQ3XW46SSBR3-Cjkd8aqhyaqPGH8W-8OWsN-PRY0G2l4CcSpOTLgWF5E7mChANQ6G7FVvF8rs1ozretod_I5c5gqtJjTQ4KGgug4f5zT7KzjEkZnUkicZJ-xTkabzBDEFETBWWprDVZfx0DRcVyavLODLv-l_9xCY0iyt7pkJwh9O9OrRKeEYUNXfMF8_q7rwIj10ELf-IwjJQD41Or8OF-NXUAqrVE1ck-5OyVMm6w2BR1yoEG7ThnTdId1HzWtDlTs44AYKGlPUyIoZpYAfR5kpfjBUlc6xSpFi5f-2Em-hvO8MpL1iQKqTR80wVRr9NbcqhCY5xmHICKsriAL6P7EcDCyeSXsp0b7pmwMYV4wp4-7E_HenlGa86oPK6ROm1nHNCJuuSuDe-2H_eU2EJoJDhytl4jmkvkbrsaaatKjxFja4iL8faqzdkM5WzHYV511vpFaLtPqJKVDy37ivz3QKPQPNPwZtSNIFnzCn5JvmSZmOs-fbeecGbGxFT-jHHtIgOsZyYxWvXBEYhULB_UwaJLmV-W5FJY1_K6OSn0YKnLXx4QHiqzGQOE0uKofYuZUPptZDjNEwC704tZElEUQdFtQMxcOQorDhAc5ggJsMTDb_IHsQ99s7V9p3l8EXxneqFihZpi2ZhjJk19Fi-WGdezrw4Mawwxd8vG15FvuVSlUWIj_tgPyTNjvMlNVH1Zt3OMNDGJVyE13cQXDYlCiunOwhI5QkIGvfHdsSB9b6mIDQP5yR_lgWxCLZ4PKX0nyxAEmZDB1wkawHshqwMcW3iMJTjD3HnrcqOZYHw14Z7YgUnSeVWfWRhTOPf0LXD4WmHAMQ1xT90JJSIfbjobg0kkVwdrVGATwBnK5dmoN6_07xeK_5Ki-W922cicx_vpcLvTCCu7aF3nrWh82XqEL3dAF4hm20Au-18C844pdW6uoyrHldz2PpCbjI-KtqHD_m35IKTRyGXQWlFsGZ9j9JLWiqfRNNm5P5SqT6RFzg2VtPEldhfDme9Jqbsl588OGPl8ysPTOkIR3Xmk43O-o2YRB9m_hU4ZkLCreet-ss0lkvUYRlwQJuRXtWpv9_oL9e-ABGdmnzrBzpupmv-R0_HTaHWPF812r1DGNFJtb7gSBUSXE2RFuLyBpmn4t_R6ftqB59n0InAcoziAjY44xcqsQ0rSZ9o53JIU5BxHX1R2n1sOLOO-_W9M3gd_EXbtlL_EMqomMBg06RJMIJVrbFJXTwVfzcxcYmvB214m2WQTI2w6B0TnXt2iVt4ZsMAZQbXP3Hx9-d17SSua_FJnWDCkj7fx8REx5OktnGUJ0j4-18rVaAUn_dbs0XPu26AwshmLObBtQ7vZMcjq_jS5_4K0iTkHiag0o9ERxGxliyLtP6T2cuX3EvCn7VO9nYTLyUMEHI1jHihmOZUhp5owwpZaGwwBMhtyKk6FK7XKWj5sNK6BsMxBInwvgwjVyMXo83M_2zM1anNVQvxF7ypghoAG4NmviBezOzn1ihjHk= \ No newline at end of file diff --git a/.gitignore b/.gitignore index 80ccd10..f72aaba 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,46 @@ +# Node modules node_modules/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Build output dist/ -.env +*.tsbuildinfo + +# IDE +.vscode/ +.idea/ +*.swp +*.swo +*~ + +# OS +.DS_Store +Thumbs.db + +# Logs +logs/ *.log -# Generated PDFs -*.pdf +# Environment +.env +.env.local +.env.*.local + +# Test +coverage/ +.nyc_output/ + +# Temporary files +*.tmp +*.temp +.cache/ + +# Archives (optional - kann entfernt werden wenn man sie im Repo haben will) +*.tar.gz +*.zip +*.bundle + +# Docker build artifacts +dist-for-docker/ diff --git a/ARCHIV-INFO.pdf b/ARCHIV-INFO.pdf new file mode 100644 index 0000000..e176e1c Binary files /dev/null and b/ARCHIV-INFO.pdf differ diff --git a/CHANGELOG.md b/CHANGELOG.md index e651f0c..ab2ed7b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,30 @@ Alle wichtigen Änderungen werden hier dokumentiert. +## [1.2.0] - 2026-01-25 + +### Hinzugefügt +- ⭐ **Pflichtfeld `termsAccepted`**: Neues erforderliches Feld bei Reservierungserstellung +- ⭐ **Custom Attributes Support**: Benutzerdefinierte Attribute können jetzt bei Reservierungen, Ressourcen, Benutzern und Accounts gesetzt werden +- ⭐ **LibreBooking Config Node**: Neuer optionaler Config-Credential für zentrale Standardwerte +- **Debug-Modus**: Neuer Debug-Modus im Trigger Node für Fehlerdiagnose +- `CUSTOM-ATTRIBUTES.md`: Dokumentation zur Verwendung von benutzerdefinierten Attributen +- `CONFIG-NODE.md`: Dokumentation zum Config Node + +### Geändert +- **Trigger "Neue Reservierungen"**: Beim ersten Poll werden existierende Reservierungen gespeichert, aber nicht getriggert +- **Trigger "Geänderte Reservierungen"**: Verbesserter Hash-Vergleich für zuverlässige Änderungserkennung +- Verbesserte Standardwerte für Zeitzone und Sprache bei Benutzererstellung + +### Behoben +- 🐛 **Trigger triggert alle existierenden Events**: Jetzt werden beim ersten Poll nur IDs/Hashes gespeichert +- 🐛 **Trigger für geänderte Events funktioniert nicht**: Komplette Neuimplementierung mit Hash-Vergleich + +### Technisch +- Neuer Credential-Typ: `libreBookingConfig` +- Erweiterte `WorkflowStaticData` für besseres State-Management im Trigger +- `getConfigDefaults()` Hilfsfunktion für Config-Integration + ## [1.1.0] - 2026-01-25 ### Geändert diff --git a/CONFIG-NODE.md b/CONFIG-NODE.md new file mode 100644 index 0000000..10f63ea --- /dev/null +++ b/CONFIG-NODE.md @@ -0,0 +1,144 @@ +# LibreBooking Config Node + +Der Config Node ermöglicht die zentrale Konfiguration von Standardwerten, die in allen LibreBooking Operationen verwendet werden können. + +## Überblick + +Der LibreBooking Config Credential ist **optional** und dient dazu: +- Standardwerte zentral zu definieren +- Wiederholte Eingaben zu vermeiden +- Konsistente Einstellungen sicherzustellen + +## Installation + +Der Config Node wird automatisch mit der LibreBooking Node installiert. Er erscheint unter **Credentials** als "LibreBooking Config". + +## Konfiguration + +### 1. Config Credential anlegen + +1. Gehen Sie zu **Credentials** in n8n +2. Klicken Sie auf **Add Credential** +3. Suchen Sie nach **LibreBooking Config** +4. Klicken Sie auf **Create** + +### 2. Standardwerte definieren + +| Einstellung | Beschreibung | Standard | +|-------------|--------------|----------| +| Standard Nutzungsbedingungen Akzeptiert | Vorauswahl für termsAccepted | `true` | +| Standard Teilnahme Erlauben | Vorauswahl für allowParticipation | `false` | +| Standard Ressourcen-ID | Standard-Ressource für Reservierungen | `0` (keine) | +| Standard Benutzer-ID | Standard-Benutzer für Reservierungen | `0` (angemeldeter Benutzer) | +| Standard Zeitplan-ID | Standard-Zeitplan für Ressourcen | `0` (keine) | +| Standard Zeitzone | Zeitzone für neue Benutzer | `Europe/Berlin` | +| Standard Sprache | Sprache für neue Benutzer | `de_de` | + +### 3. Config mit Node verbinden + +1. Öffnen Sie einen LibreBooking Node +2. Bei Ressourcen wie Reservierung, Ressource, Benutzer oder Konto erscheint ein optionales Credential-Feld für **LibreBooking Config** +3. Wählen Sie Ihre Config Credential aus + +## Verwendung + +### Beispiel: Reservierung erstellen + +**Ohne Config Node:** +``` +- Ressourcen-ID: 1 +- Startzeit: ... +- Endzeit: ... +- Nutzungsbedingungen Akzeptiert: true (manuell) +``` + +**Mit Config Node:** +``` +- Ressourcen-ID: 1 (oder aus Config wenn 0 = übernehmen) +- Startzeit: ... +- Endzeit: ... +- Nutzungsbedingungen Akzeptiert: (automatisch aus Config) +``` + +### Priorität der Werte + +1. **Höchste Priorität**: Werte direkt im Node eingegeben +2. **Niedrigere Priorität**: Werte aus dem Config Node +3. **Fallback**: Eingebaute Standardwerte + +## Anwendungsfälle + +### 1. Automatisierte Buchungen + +Wenn Sie einen Workflow haben, der automatisch Buchungen erstellt: + +``` +Config Node: +- Standard Nutzungsbedingungen Akzeptiert: true +- Standard Teilnahme Erlauben: false +``` + +So müssen Sie diese Werte nicht in jedem Create-Node angeben. + +### 2. Standardressource für Abteilung + +``` +Config Node für Abteilung A: +- Standard Ressourcen-ID: 5 (Konferenzraum A) + +Config Node für Abteilung B: +- Standard Ressourcen-ID: 8 (Konferenzraum B) +``` + +### 3. Mehrsprachige Umgebung + +``` +Config Node für deutschsprachige Workflows: +- Standard Zeitzone: Europe/Berlin +- Standard Sprache: de_de + +Config Node für englischsprachige Workflows: +- Standard Zeitzone: Europe/London +- Standard Sprache: en_us +``` + +## Best Practices + +### 1. Benennung + +Verwenden Sie aussagekräftige Namen für Ihre Config Credentials: +- `LibreBooking Config - Produktion` +- `LibreBooking Config - Test` +- `LibreBooking Config - Abteilung Marketing` + +### 2. Dokumentation + +Dokumentieren Sie Ihre Config-Einstellungen für Ihr Team. + +### 3. Umgebungstrennung + +Erstellen Sie separate Configs für verschiedene Umgebungen (Test/Produktion). + +## Fehlerbehebung + +### Config wird nicht angewendet + +- Stellen Sie sicher, dass der Config Node mit dem LibreBooking Node verbunden ist +- Prüfen Sie, ob die Ressource den Config Node unterstützt (nur Reservierung, Ressource, Benutzer, Konto) + +### Werte werden überschrieben + +- Direkt im Node eingegebene Werte haben immer Vorrang +- Lassen Sie Felder leer, wenn der Config-Wert verwendet werden soll + +## Technische Details + +Der Config Node wird als n8n Credential implementiert, ist aber kein echtes Authentifizierungs-Credential. Er speichert lediglich Konfigurationswerte. + +**Credential-Name**: `libreBookingConfig` + +**Unterstützte Ressourcen**: +- Reservierung (`reservation`) +- Ressource (`resource`) +- Benutzer (`user`) +- Konto (`account`) diff --git a/CONFIG-NODE.pdf b/CONFIG-NODE.pdf new file mode 100644 index 0000000..8dca223 Binary files /dev/null and b/CONFIG-NODE.pdf differ diff --git a/CUSTOM-ATTRIBUTES.md b/CUSTOM-ATTRIBUTES.md new file mode 100644 index 0000000..5534a32 --- /dev/null +++ b/CUSTOM-ATTRIBUTES.md @@ -0,0 +1,159 @@ +# Benutzerdefinierte Attribute (Custom Attributes) + +Diese Dokumentation erklärt, wie Sie benutzerdefinierte Attribute in LibreBooking über die n8n Nodes verwenden können. + +## Überblick + +LibreBooking unterstützt benutzerdefinierte Attribute für: +- **Reservierungen** (Kategorie-ID: 1) +- **Benutzer** (Kategorie-ID: 2) +- **Ressourcen** (Kategorie-ID: 4) +- **Ressourcen-Typen** (Kategorie-ID: 5) + +## Attribut-Typen + +| Typ | Beschreibung | Wert | +|-----|--------------|------| +| Einzeilig | Einfaches Textfeld | 1 | +| Mehrzeilig | Textbereich | 2 | +| Auswahlliste | Dropdown-Menü | 3 | +| Checkbox | Ja/Nein Feld | 4 | +| Datum/Zeit | Datums-/Zeitauswahl | 5 | + +## Attribute abrufen + +### Alle Attribute einer Kategorie abrufen + +1. Wählen Sie **Ressource**: `Attribut` +2. Wählen Sie **Operation**: `Nach Kategorie Abrufen` +3. Wählen Sie **Kategorie-ID**: z.B. `Reservierung` + +Die Antwort enthält alle Attribute mit ihren IDs und Eigenschaften. + +### Einzelnes Attribut abrufen + +1. Wählen Sie **Ressource**: `Attribut` +2. Wählen Sie **Operation**: `Abrufen` +3. Geben Sie die **Attribut-ID** ein + +## Attribute bei Reservierungen setzen + +### Bei Erstellen einer Reservierung + +1. Wählen Sie **Ressource**: `Reservierung` +2. Wählen Sie **Operation**: `Erstellen` +3. Füllen Sie die Pflichtfelder aus +4. Unter **Benutzerdefinierte Attribute**: + - Klicken Sie auf "Attribut hinzufügen" + - Geben Sie die **Attribut-ID** ein (z.B. `1`) + - Geben Sie den **Wert** ein (z.B. `Meetingraum-Konfiguration`) + +### Bei Aktualisieren einer Reservierung + +Gleiche Vorgehensweise wie beim Erstellen. + +### Beispiel JSON für API-Request + +```json +{ + "resourceId": 1, + "startDateTime": "2024-01-15T10:00:00+01:00", + "endDateTime": "2024-01-15T11:00:00+01:00", + "title": "Team Meeting", + "termsAccepted": true, + "customAttributes": [ + { + "attributeId": 1, + "attributeValue": "Standard-Setup" + }, + { + "attributeId": 2, + "attributeValue": "10" + } + ] +} +``` + +## Attribute bei Ressourcen setzen + +### Bei Erstellen einer Ressource + +1. Wählen Sie **Ressource**: `Ressource` +2. Wählen Sie **Operation**: `Erstellen` +3. Füllen Sie die Pflichtfelder aus (Name, Zeitplan-ID) +4. Unter **Benutzerdefinierte Attribute**: + - Klicken Sie auf "Attribut hinzufügen" + - Geben Sie die **Attribut-ID** und den **Wert** ein + +### Beispiel: Raum mit Ausstattung + +```json +{ + "name": "Konferenzraum A", + "scheduleId": 1, + "customAttributes": [ + { + "attributeId": 10, + "attributeValue": "Beamer, Whiteboard" + }, + { + "attributeId": 11, + "attributeValue": "20" + } + ] +} +``` + +## Attribute bei Benutzern setzen + +### Bei Erstellen eines Benutzers + +1. Wählen Sie **Ressource**: `Benutzer` +2. Wählen Sie **Operation**: `Erstellen` +3. Füllen Sie die Pflichtfelder aus +4. Unter **Benutzerdefinierte Attribute**: + - Klicken Sie auf "Attribut hinzufügen" + - Geben Sie die **Attribut-ID** und den **Wert** ein + +## Neue Attribute erstellen (Admin) + +1. Wählen Sie **Ressource**: `Attribut` +2. Wählen Sie **Operation**: `Erstellen` +3. Füllen Sie aus: + - **Kategorie-ID**: Ziel-Kategorie (1, 2, 4 oder 5) + - **Attribut-Label**: Anzeigename + - **Attribut-Typ**: Feldtyp +4. Optional unter **Attribut-Optionen**: + - **Erforderlich**: Pflichtfeld? + - **Nur Admin**: Nur für Admins sichtbar? + - **Mögliche Werte**: Für Auswahllisten (komma-getrennt) + +## Tipps + +### Attribut-IDs herausfinden + +1. Nutzen Sie die Operation "Nach Kategorie Abrufen" +2. Notieren Sie sich die `id` der benötigten Attribute + +### Checkbox-Attribute + +Für Checkbox-Attribute verwenden Sie: +- `"1"` oder `"true"` für aktiviert +- `"0"` oder `"false"` für deaktiviert + +### Auswahllisten + +Der Wert muss exakt einem der möglichen Werte entsprechen. + +## Fehlerbehebung + +### Attribut wird nicht gespeichert + +- Prüfen Sie, ob die Attribut-ID korrekt ist +- Prüfen Sie, ob das Attribut für diese Kategorie gilt +- Prüfen Sie, ob der Wert dem Attribut-Typ entspricht + +### Zugriff verweigert + +- Einige Attribute sind nur für Admins verfügbar +- Prüfen Sie die Berechtigungen in LibreBooking diff --git a/CUSTOM-ATTRIBUTES.pdf b/CUSTOM-ATTRIBUTES.pdf new file mode 100644 index 0000000..d6ca407 Binary files /dev/null and b/CUSTOM-ATTRIBUTES.pdf differ diff --git a/DOCKER-INTEGRATION.pdf b/DOCKER-INTEGRATION.pdf new file mode 100644 index 0000000..115fe82 Binary files /dev/null and b/DOCKER-INTEGRATION.pdf differ diff --git a/GIT-COMMANDS.pdf b/GIT-COMMANDS.pdf new file mode 100644 index 0000000..8e005b6 Binary files /dev/null and b/GIT-COMMANDS.pdf differ diff --git a/GIT-UPLOAD.md b/GIT-UPLOAD.md new file mode 100644 index 0000000..968bacb --- /dev/null +++ b/GIT-UPLOAD.md @@ -0,0 +1,107 @@ +# Git Upload Anleitung + +Diese Anleitung erklärt, wie Sie das LibreBooking n8n Node Repository auf verschiedene Git-Plattformen hochladen können. + +## Option 1: GitHub/GitLab/Bitbucket (Web Interface) + +1. Erstelle ein neues Repository auf GitHub/GitLab/Bitbucket +2. Entpacke das Archiv lokal +3. Folge den Anweisungen auf der Plattform + +## Option 2: Command Line (Empfohlen) + +### GitHub + +```bash +# 1. Repository erstellen auf github.com +# 2. Dann lokal: +cd librebooking_n8n_node +git remote add origin https://github.com/USERNAME/n8n-nodes-librebooking.git +git branch -M main +git push -u origin main +git push origin v1.2.0 +``` + +### GitLab + +```bash +cd librebooking_n8n_node +git remote add origin https://gitlab.com/USERNAME/n8n-nodes-librebooking.git +git branch -M main +git push -u origin main +git push origin v1.2.0 +``` + +### Bitbucket + +```bash +cd librebooking_n8n_node +git remote add origin https://bitbucket.org/USERNAME/n8n-nodes-librebooking.git +git branch -M main +git push -u origin main +git push origin v1.2.0 +``` + +## Option 3: Git Bundle verwenden + +Wenn Sie das Git Bundle (.bundle Datei) erhalten haben: + +```bash +# Bundle entpacken (klonen) +git clone librebooking-n8n-node-v1.2.0.bundle librebooking_n8n_node +cd librebooking_n8n_node + +# Remote hinzufügen +git remote add origin YOUR_REMOTE_URL + +# Pushen mit Tags +git push -u origin main --tags +``` + +## Wichtige Hinweise + +### Vor dem Upload prüfen + +- [ ] Keine sensiblen Daten (API Keys, Passwörter) im Repository +- [ ] `.gitignore` ist korrekt konfiguriert +- [ ] `node_modules/` und `dist/` sind nicht im Repository +- [ ] Alle Dokumentation ist aktuell + +### Nach dem Upload + +- [ ] Repository ist erreichbar +- [ ] Alle Dateien sind vorhanden +- [ ] Tags sind sichtbar +- [ ] README wird korrekt angezeigt + +## SSH vs HTTPS + +### HTTPS (einfacher) +```bash +git remote add origin https://github.com/USERNAME/REPO.git +``` + +### SSH (empfohlen für regelmäßige Nutzung) +```bash +git remote add origin git@github.com:USERNAME/REPO.git +``` + +## Fehlerbehandlung + +### "fatal: remote origin already exists" +```bash +git remote remove origin +git remote add origin NEW_URL +``` + +### "Updates were rejected" +```bash +# VORSICHT: Nur wenn Sie sicher sind +git push -f origin main +``` + +## Siehe auch + +- [CONTRIBUTING.md](CONTRIBUTING.md) - Beitragen zum Projekt +- [README.md](README.md) - Hauptdokumentation +- [RELEASE-NOTES.md](RELEASE-NOTES.md) - Versionshinweise diff --git a/GIT-UPLOAD.pdf b/GIT-UPLOAD.pdf new file mode 100644 index 0000000..1333730 Binary files /dev/null and b/GIT-UPLOAD.pdf differ diff --git a/MANUELLE-INSTALLATION-CONTAINER.pdf b/MANUELLE-INSTALLATION-CONTAINER.pdf new file mode 100644 index 0000000..7453f97 Binary files /dev/null and b/MANUELLE-INSTALLATION-CONTAINER.pdf differ diff --git a/PACKAGE-CONTENTS.md b/PACKAGE-CONTENTS.md new file mode 100644 index 0000000..d364678 --- /dev/null +++ b/PACKAGE-CONTENTS.md @@ -0,0 +1,151 @@ +# Package Contents + +Übersicht aller Dateien im LibreBooking n8n Node Paket. + +## 📁 Struktur + +``` +librebooking_n8n_node/ +├── 📄 Hauptdateien +├── 📁 nodes/ # n8n Nodes +├── 📁 credentials/ # Credentials +├── 📁 workflows/ # Beispiel Workflows +├── 📁 test/ # Test Dateien +└── 📄 Dokumentation & Skripte +``` + +--- + +## 📄 Hauptdateien + +| Datei | Beschreibung | +|-------|-------------| +| `package.json` | Node Package Konfiguration | +| `tsconfig.json` | TypeScript Konfiguration | +| `index.ts` | Haupt-Export Datei | + +--- + +## 📁 Nodes + +| Datei | Beschreibung | +|-------|-------------| +| `nodes/LibreBooking/LibreBooking.node.ts` | Haupt-Node für alle CRUD Operationen | +| `nodes/LibreBooking/librebooking.svg` | Node Icon | +| `nodes/LibreBookingTrigger/LibreBookingTrigger.node.ts` | Trigger Node für Events | +| `nodes/LibreBookingTrigger/librebooking.svg` | Trigger Node Icon | + +--- + +## 🔑 Credentials + +| Datei | Beschreibung | +|-------|-------------| +| `credentials/LibreBookingApi.credentials.ts` | API Credentials (URL, Benutzer, Passwort) | +| `credentials/LibreBookingConfig.credentials.ts` | Config Node für Standardwerte | + +--- + +## 📚 Dokumentation + +| Datei | Beschreibung | +|-------|-------------| +| `README.md` | Hauptdokumentation | +| `INSTALLATION.md` | Detaillierte Installationsanleitung | +| `SCHNELLSTART.md` | Quick Start Guide | +| `CUSTOM-ATTRIBUTES.md` | Custom Attributes Anleitung | +| `CONFIG-NODE.md` | Config Node Guide | +| `TROUBLESHOOTING.md` | Problemlösungen | +| `DOCKER-INTEGRATION.md` | Docker Dokumentation | +| `SECURITY.md` | Sicherheitshinweise | +| `CHANGELOG.md` | Versionshistorie | +| `CONTRIBUTING.md` | Contribution Guide | +| `LICENSE` | MIT Lizenz | + +--- + +## 📦 Git-spezifische Dateien + +| Datei | Beschreibung | +|-------|-------------| +| `GIT-UPLOAD.md` | Git Upload Anleitung | +| `RELEASE-NOTES.md` | Release Notes v1.2.0 | +| `PACKAGE-CONTENTS.md` | Diese Datei | +| `.gitignore` | Git Ignore Konfiguration | + +--- + +## 🛠️ Skripte + +### Installation +| Datei | Beschreibung | +|-------|-------------| +| `install.sh` | Linux/Mac Installation | +| `install.ps1` | Windows PowerShell Installation | +| `quick-install.sh` | Schnellinstallation | + +### Docker +| Datei | Beschreibung | +|-------|-------------| +| `install-docker.sh` | Docker Installation | +| `install-docker-manual.sh` | Manuelle Docker Installation | +| `install-in-container.sh` | Installation im Container | +| `build-on-host.sh` | Host-seitiges Bauen | + +### Wartung +| Datei | Beschreibung | +|-------|-------------| +| `update-node.sh` | Update Skript | +| `check-installation.sh` | Installation prüfen | +| `fix-node-installation.sh` | Installation reparieren | +| `update-dependencies.sh` | Dependencies aktualisieren | +| `upload-to-git.sh` | Git Upload Helper | + +--- + +## 🐳 Docker Konfiguration + +| Datei | Beschreibung | +|-------|-------------| +| `Dockerfile` | Docker Image Definition | +| `docker-compose.yml` | Standard Docker Compose | +| `docker-compose.override.yml` | Override für Entwicklung | +| `docker-compose.readonly.yml` | Read-only Volume Konfiguration | +| `.dockerignore` | Docker Build Ausschlüsse | + +--- + +## 🧪 Test + +| Datei | Beschreibung | +|-------|-------------| +| `test/test-api.ts` | API Test Script | +| `workflows/example-workflows.json` | Beispiel n8n Workflows | + +--- + +## ⚙️ Konfiguration + +| Datei | Beschreibung | +|-------|-------------| +| `.npmrc` | npm Konfiguration | +| `.npmignore` | npm Publish Ausschlüsse | + +--- + +## 📊 Build Output (nicht im Repository) + +| Verzeichnis | Beschreibung | +|-------------|-------------| +| `dist/` | Kompilierte JavaScript Dateien | +| `node_modules/` | npm Dependencies | +| `dist-for-docker/` | Host-Build für Docker | + +--- + +## Dateigröße + +- **Quellcode**: ~50 KB +- **Mit node_modules**: ~50 MB +- **Mit dist**: ~100 KB zusätzlich +- **Git Repository**: ~1 MB (ohne node_modules) diff --git a/PACKAGE-CONTENTS.pdf b/PACKAGE-CONTENTS.pdf new file mode 100644 index 0000000..a8e418d Binary files /dev/null and b/PACKAGE-CONTENTS.pdf differ diff --git a/README.md b/README.md index ef4abac..edfd974 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,44 @@ # LibreBooking n8n Node +![Version](https://img.shields.io/badge/version-1.2.0-blue.svg) +![License](https://img.shields.io/badge/license-MIT-green.svg) +![n8n](https://img.shields.io/badge/n8n-compatible-orange.svg) +![TypeScript](https://img.shields.io/badge/TypeScript-5.0-blue.svg) + Integration von LibreBooking in n8n für automatisierte Reservierungs- und Ressourcenverwaltung. +## 📦 Installation via Git + +```bash +# Repository klonen +git clone https://github.com/YOUR-USERNAME/n8n-nodes-librebooking.git +cd n8n-nodes-librebooking + +# Dependencies installieren +npm install + +# Bauen +npm run build +``` + +### Quick Start nach Git Clone + +```bash +# Option 1: Automatische Installation +./quick-install.sh n8n + +# Option 2: Docker Compose +docker-compose up -d + +# Option 3: Manuell in bestehenden n8n Container +docker cp dist n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ +docker cp package.json n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ +docker cp node_modules n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ +docker restart n8n +``` + +--- + ## ⚡ Schnellstart (EMPFOHLEN) **Die einfachste Methode: Auf dem Host bauen, in Docker kopieren** @@ -42,13 +79,6 @@ npm run docker:copy # Kopiert in Container npm run docker:restart # Startet Container neu ``` -## 📚 Dokumentation - -- **[INSTALLATION.md](INSTALLATION.md)** - Alle Installationsmethoden -- **[SCHNELLSTART.md](SCHNELLSTART.md)** - Ultra-kurze Anleitung -- **[TROUBLESHOOTING.md](TROUBLESHOOTING.md)** - Problemlösung -- **[DOCKER-INTEGRATION.md](DOCKER-INTEGRATION.md)** - Docker-spezifische Anleitung - ## 🔑 Credentials einrichten 1. Öffne n8n: http://localhost:5678 @@ -66,11 +96,27 @@ npm run docker:restart # Startet Container neu - Ressourcen und Verfügbarkeit verwalten - Benutzer und Gruppen administrieren - Zeitpläne und Zubehör konfigurieren +- **NEU v1.2.0**: Benutzerdefinierte Attribute setzen ### LibreBooking Trigger Node - Neue Reservierungen überwachen - Geänderte Reservierungen erfassen - Filter nach Ressource/Zeitplan/Benutzer +- **NEU v1.2.0**: Korrektes Verhalten beim ersten Poll (keine Altdaten) +- **NEU v1.2.0**: Zuverlässige Änderungserkennung via Hash-Vergleich + +### LibreBooking Config (v1.2.0) +- Optionales Credential für zentrale Standardwerte +- Konfigurierbar: termsAccepted, allowParticipation, Zeitzone, Sprache + +## 📚 Dokumentation + +- **[INSTALLATION.md](INSTALLATION.md)** - Alle Installationsmethoden +- **[SCHNELLSTART.md](SCHNELLSTART.md)** - Ultra-kurze Anleitung +- **[TROUBLESHOOTING.md](TROUBLESHOOTING.md)** - Problemlösung +- **[DOCKER-INTEGRATION.md](DOCKER-INTEGRATION.md)** - Docker-spezifische Anleitung +- **[CUSTOM-ATTRIBUTES.md](CUSTOM-ATTRIBUTES.md)** - Benutzerdefinierte Attribute verwenden +- **[CONFIG-NODE.md](CONFIG-NODE.md)** - Config Node für Standardwerte ## 🔄 Updates diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md new file mode 100644 index 0000000..d7f2c62 --- /dev/null +++ b/RELEASE-NOTES.md @@ -0,0 +1,135 @@ +# Release Notes v1.2.0 + +**Release Datum:** Januar 2026 + +## Übersicht + +Diese Version bringt wichtige neue Features, Verbesserungen und Bugfixes für den LibreBooking n8n Node. + +--- + +## Neue Features + +### 🏷️ Custom Attributes Support +- Setzen von benutzerdefinierten Attributen für: + - Reservierungen + - Ressourcen + - Benutzer + - Accounts +- Flexible Konfiguration über fixedCollection +- Unterstützung für verschiedene Attributtypen + +### ⚙️ Config Node +- Zentraler Konfigurationsknoten für Standardwerte +- Optionale Verwendung - bestehende Workflows funktionieren weiterhin +- Reduziert manuelle Eingaben bei wiederkehrenden Werten +- Konfigurierbare Defaults für: + - Standard-Ressource + - Standard-Zeitplan + - Standardwerte für neue Reservierungen + +### 🔄 Verbesserte Trigger +- Neue Events triggern nicht mehr mit existierenden Daten +- Geänderte Events werden korrekt erkannt +- Hash-basierte Änderungserkennung +- Verbesserte Deduplizierung + +### ✅ Pflichtfelder +- `termsAccepted` als Pflichtfeld bei Reservation Create +- Alle Pflichtfelder gemäß API-Dokumentation geprüft und ergänzt +- Bessere Validierung vor API-Aufrufen + +--- + +## Verbesserungen + +### 📚 Dokumentation +- Neue CUSTOM-ATTRIBUTES.md Anleitung +- CONFIG-NODE.md Dokumentation +- Erweiterte TROUBLESHOOTING.md +- SECURITY.md für Sicherheitshinweise + +### 🐳 Docker Integration +- Read-only Volume Problem gelöst +- build-on-host.sh für Host-seitiges Bauen +- docker-compose.readonly.yml für sichere Deployments +- Verbesserte Fehlermeldungen + +### 🔒 Sicherheit +- npm audit Vulnerabilities dokumentiert +- package.json overrides für sichere Dependencies +- .npmrc zur Unterdrückung von Warnungen + +--- + +## Bugfixes + +- Trigger löst bei neuen Events nicht mehr mit alten Daten aus +- Korrektes Handling von leeren API-Responses +- Verbesserte Fehlerbehandlung bei Authentifizierung +- Session-Timeout wird korrekt behandelt + +--- + +## Installation + +Siehe [INSTALLATION.md](INSTALLATION.md) für detaillierte Anweisungen. + +```bash +# Quick Install +git clone https://github.com/YOUR-USERNAME/n8n-nodes-librebooking.git +cd n8n-nodes-librebooking +npm install +npm run build +``` + +--- + +## Upgrade von v1.1.0 + +```bash +cd /opt/n8n/custom-nodes/n8n-nodes-librebooking +git pull +npm install +npm run build + +# Bei Docker: +docker cp dist n8n:/home/node/.n8n/custom/n8n-nodes-librebooking/ +docker restart n8n +``` + +--- + +## Breaking Changes + +**Keine** - Diese Version ist vollständig abwärtskompatibel. + +--- + +## Bekannte Einschränkungen + +- npm audit zeigt Vulnerabilities von n8n-workflow Dependencies (siehe SECURITY.md) +- Read-only Docker Volumes erfordern Host-seitiges Bauen + +--- + +## Nächste Version (Roadmap) + +- [ ] Webhook Support für Echtzeit-Events +- [ ] Batch-Operationen für mehrere Reservierungen +- [ ] Erweiterte Filteroptionen +- [ ] npm Registry Veröffentlichung + +--- + +## Danksagungen + +Vielen Dank an alle Contributors und Tester! + +--- + +## Links + +- [GitHub Repository](https://github.com/YOUR-USERNAME/n8n-nodes-librebooking) +- [LibreBooking](https://github.com/LibreBooking/app) +- [n8n](https://n8n.io) diff --git a/RELEASE-NOTES.pdf b/RELEASE-NOTES.pdf new file mode 100644 index 0000000..fe5ffc9 Binary files /dev/null and b/RELEASE-NOTES.pdf differ diff --git a/SCHNELLSTART-DOCKER.pdf b/SCHNELLSTART-DOCKER.pdf new file mode 100644 index 0000000..a1ec72d Binary files /dev/null and b/SCHNELLSTART-DOCKER.pdf differ diff --git a/SCHNELLSTART.pdf b/SCHNELLSTART.pdf new file mode 100644 index 0000000..7fc336a Binary files /dev/null and b/SCHNELLSTART.pdf differ diff --git a/SECURITY.pdf b/SECURITY.pdf new file mode 100644 index 0000000..63c7862 Binary files /dev/null and b/SECURITY.pdf differ diff --git a/TROUBLESHOOTING.pdf b/TROUBLESHOOTING.pdf new file mode 100644 index 0000000..2f353a6 Binary files /dev/null and b/TROUBLESHOOTING.pdf differ diff --git a/credentials/LibreBookingConfig.credentials.ts b/credentials/LibreBookingConfig.credentials.ts new file mode 100644 index 0000000..3f0c365 --- /dev/null +++ b/credentials/LibreBookingConfig.credentials.ts @@ -0,0 +1,75 @@ +import { + ICredentialType, + INodeProperties, +} from 'n8n-workflow'; + +/** + * LibreBooking Config Credential + * + * Ermöglicht die zentrale Konfiguration von Standardwerten, + * die in allen LibreBooking Nodes verwendet werden können. + */ +export class LibreBookingConfig implements ICredentialType { + name = 'libreBookingConfig'; + displayName = 'LibreBooking Config'; + documentationUrl = 'https://librebooking.org'; + + properties: INodeProperties[] = [ + { + displayName: 'Hinweis', + name: 'notice', + type: 'notice', + default: '', + description: 'Dieser Config-Node speichert Standardwerte für LibreBooking Operationen. Er ist optional und die Werte können in den einzelnen Nodes überschrieben werden.', + }, + { + displayName: 'Standard Nutzungsbedingungen Akzeptiert', + name: 'defaultTermsAccepted', + type: 'boolean', + default: true, + description: 'Standardwert für die Akzeptanz der Nutzungsbedingungen bei Reservierungen', + }, + { + displayName: 'Standard Teilnahme Erlauben', + name: 'defaultAllowParticipation', + type: 'boolean', + default: false, + description: 'Standardwert für die Teilnahme-Erlaubnis bei Reservierungen', + }, + { + displayName: 'Standard Ressourcen-ID', + name: 'defaultResourceId', + type: 'number', + default: 0, + description: 'Standard-Ressourcen-ID für Reservierungen (0 = keine Standardressource)', + }, + { + displayName: 'Standard Benutzer-ID', + name: 'defaultUserId', + type: 'number', + default: 0, + description: 'Standard-Benutzer-ID für Reservierungen (0 = angemeldeter Benutzer)', + }, + { + displayName: 'Standard Zeitplan-ID', + name: 'defaultScheduleId', + type: 'number', + default: 0, + description: 'Standard-Zeitplan-ID für Ressourcen-Erstellung (0 = keine Standard-Zeitplan)', + }, + { + displayName: 'Standard Zeitzone', + name: 'defaultTimezone', + type: 'string', + default: 'Europe/Berlin', + description: 'Standard-Zeitzone für neue Benutzer', + }, + { + displayName: 'Standard Sprache', + name: 'defaultLanguage', + type: 'string', + default: 'de_de', + description: 'Standard-Sprache für neue Benutzer', + }, + ]; +} diff --git a/index.ts b/index.ts index c94c56e..bbfd517 100644 --- a/index.ts +++ b/index.ts @@ -4,3 +4,4 @@ export * from './nodes/LibreBooking/LibreBooking.node'; export * from './nodes/LibreBookingTrigger/LibreBookingTrigger.node'; export * from './credentials/LibreBookingApi.credentials'; +export * from './credentials/LibreBookingConfig.credentials'; diff --git a/n8n-nodes-librebooking-v1.0.0.tar.gz b/n8n-nodes-librebooking-v1.0.0.tar.gz deleted file mode 100644 index e6c52bc..0000000 Binary files a/n8n-nodes-librebooking-v1.0.0.tar.gz and /dev/null differ diff --git a/n8n-nodes-librebooking-v1.0.0.zip b/n8n-nodes-librebooking-v1.0.0.zip deleted file mode 100644 index 38b91aa..0000000 Binary files a/n8n-nodes-librebooking-v1.0.0.zip and /dev/null differ diff --git a/nodes/LibreBooking/LibreBooking.node.ts b/nodes/LibreBooking/LibreBooking.node.ts index 675b4ad..7b2467e 100644 --- a/nodes/LibreBooking/LibreBooking.node.ts +++ b/nodes/LibreBooking/LibreBooking.node.ts @@ -14,6 +14,16 @@ interface LibreBookingSession { sessionExpires: string; } +interface ConfigDefaults { + defaultTermsAccepted: boolean; + defaultAllowParticipation: boolean; + defaultResourceId: number; + defaultUserId: number; + defaultScheduleId: number; + defaultTimezone: string; + defaultLanguage: string; +} + /** * Authentifizierung bei LibreBooking */ @@ -140,6 +150,52 @@ function parseIdList(value: string | undefined): number[] { return value.split(',').map(id => parseInt(id.trim(), 10)).filter(id => !isNaN(id)); } +/** + * Config-Defaults laden + */ +async function getConfigDefaults(executeFunctions: IExecuteFunctions): Promise { + const defaults: ConfigDefaults = { + defaultTermsAccepted: true, + defaultAllowParticipation: false, + defaultResourceId: 0, + defaultUserId: 0, + defaultScheduleId: 0, + defaultTimezone: 'Europe/Berlin', + defaultLanguage: 'de_de', + }; + + try { + const configCredentials = await executeFunctions.getCredentials('libreBookingConfig'); + if (configCredentials) { + if (configCredentials.defaultTermsAccepted !== undefined) { + defaults.defaultTermsAccepted = configCredentials.defaultTermsAccepted as boolean; + } + if (configCredentials.defaultAllowParticipation !== undefined) { + defaults.defaultAllowParticipation = configCredentials.defaultAllowParticipation as boolean; + } + if (configCredentials.defaultResourceId !== undefined && configCredentials.defaultResourceId !== 0) { + defaults.defaultResourceId = configCredentials.defaultResourceId as number; + } + if (configCredentials.defaultUserId !== undefined && configCredentials.defaultUserId !== 0) { + defaults.defaultUserId = configCredentials.defaultUserId as number; + } + if (configCredentials.defaultScheduleId !== undefined && configCredentials.defaultScheduleId !== 0) { + defaults.defaultScheduleId = configCredentials.defaultScheduleId as number; + } + if (configCredentials.defaultTimezone) { + defaults.defaultTimezone = configCredentials.defaultTimezone as string; + } + if (configCredentials.defaultLanguage) { + defaults.defaultLanguage = configCredentials.defaultLanguage as string; + } + } + } catch (error) { + // Config-Credential ist optional, ignoriere Fehler + } + + return defaults; +} + /** * LibreBooking n8n Node * @@ -165,6 +221,15 @@ export class LibreBooking implements INodeType { name: 'libreBookingApi', required: true, }, + { + name: 'libreBookingConfig', + required: false, + displayOptions: { + show: { + resource: ['reservation', 'resource', 'user', 'account'], + }, + }, + }, ], properties: [ // ===================================================== @@ -420,6 +485,16 @@ export class LibreBooking implements INodeType { default: '', description: 'Endzeitpunkt der Reservierung (ISO 8601 Format)', }, + // PFLICHTFELD: termsAccepted für Reservierung erstellen + { + displayName: 'Nutzungsbedingungen Akzeptiert', + name: 'termsAccepted', + type: 'boolean', + required: true, + displayOptions: { show: { resource: ['reservation'], operation: ['create'] } }, + default: true, + description: 'Ob der Benutzer die Nutzungsbedingungen akzeptiert (Pflichtfeld laut API)', + }, { displayName: 'Titel', name: 'title', @@ -440,6 +515,41 @@ export class LibreBooking implements INodeType { ], default: 'this', }, + // CUSTOM ATTRIBUTES für Reservierungen + { + displayName: 'Benutzerdefinierte Attribute', + name: 'customAttributes', + type: 'fixedCollection', + typeOptions: { + multipleValues: true, + }, + default: {}, + placeholder: 'Attribut hinzufügen', + displayOptions: { show: { resource: ['reservation'], operation: ['create', 'update'] } }, + options: [ + { + name: 'attribute', + displayName: 'Attribut', + values: [ + { + displayName: 'Attribut-ID', + name: 'attributeId', + type: 'number', + default: 0, + description: 'Die ID des benutzerdefinierten Attributs', + }, + { + displayName: 'Wert', + name: 'attributeValue', + type: 'string', + default: '', + description: 'Der Wert für dieses Attribut', + }, + ], + }, + ], + description: 'Benutzerdefinierte Attribute für diese Reservierung setzen', + }, { displayName: 'Zusätzliche Felder', name: 'additionalFields', @@ -454,7 +564,7 @@ export class LibreBooking implements INodeType { { displayName: 'Teilnehmer', name: 'participants', type: 'string', default: '', description: 'Komma-getrennte Benutzer-IDs' }, { displayName: 'Eingeladene', name: 'invitees', type: 'string', default: '', description: 'Komma-getrennte Benutzer-IDs' }, { displayName: 'Teilnahme Erlauben', name: 'allowParticipation', type: 'boolean', default: true }, - { displayName: 'Nutzungsbedingungen Akzeptiert', name: 'termsAccepted', type: 'boolean', default: true }, + { displayName: 'Ressourcen-ID (Update)', name: 'resourceId', type: 'number', default: '', description: 'Ressourcen-ID für Updates' }, ], }, { @@ -513,6 +623,42 @@ export class LibreBooking implements INodeType { required: true, displayOptions: { show: { resource: ['resource'], operation: ['create'] } }, default: 1, + description: 'Die ID des Zeitplans für diese Ressource (Pflichtfeld)', + }, + // CUSTOM ATTRIBUTES für Ressourcen + { + displayName: 'Benutzerdefinierte Attribute', + name: 'resourceCustomAttributes', + type: 'fixedCollection', + typeOptions: { + multipleValues: true, + }, + default: {}, + placeholder: 'Attribut hinzufügen', + displayOptions: { show: { resource: ['resource'], operation: ['create', 'update'] } }, + options: [ + { + name: 'attribute', + displayName: 'Attribut', + values: [ + { + displayName: 'Attribut-ID', + name: 'attributeId', + type: 'number', + default: 0, + description: 'Die ID des benutzerdefinierten Attributs', + }, + { + displayName: 'Wert', + name: 'attributeValue', + type: 'string', + default: '', + description: 'Der Wert für dieses Attribut', + }, + ], + }, + ], + description: 'Benutzerdefinierte Attribute für diese Ressource setzen', }, { displayName: 'Ressourcen-Optionen', @@ -579,6 +725,7 @@ export class LibreBooking implements INodeType { required: true, displayOptions: { show: { resource: ['user'], operation: ['create'] } }, default: '', + description: 'E-Mail-Adresse des Benutzers (Pflichtfeld)', }, { displayName: 'Benutzername', @@ -587,6 +734,7 @@ export class LibreBooking implements INodeType { required: true, displayOptions: { show: { resource: ['user'], operation: ['create'] } }, default: '', + description: 'Benutzername für die Anmeldung (Pflichtfeld)', }, { displayName: 'Passwort', @@ -596,6 +744,7 @@ export class LibreBooking implements INodeType { required: true, displayOptions: { show: { resource: ['user'], operation: ['create', 'updatePassword'] } }, default: '', + description: 'Passwort des Benutzers (Pflichtfeld)', }, { displayName: 'Vorname', @@ -604,6 +753,7 @@ export class LibreBooking implements INodeType { required: true, displayOptions: { show: { resource: ['user'], operation: ['create', 'update'] } }, default: '', + description: 'Vorname des Benutzers (Pflichtfeld)', }, { displayName: 'Nachname', @@ -612,6 +762,42 @@ export class LibreBooking implements INodeType { required: true, displayOptions: { show: { resource: ['user'], operation: ['create', 'update'] } }, default: '', + description: 'Nachname des Benutzers (Pflichtfeld)', + }, + // Custom Attributes für Benutzer + { + displayName: 'Benutzerdefinierte Attribute', + name: 'userCustomAttributes', + type: 'fixedCollection', + typeOptions: { + multipleValues: true, + }, + default: {}, + placeholder: 'Attribut hinzufügen', + displayOptions: { show: { resource: ['user'], operation: ['create', 'update'] } }, + options: [ + { + name: 'attribute', + displayName: 'Attribut', + values: [ + { + displayName: 'Attribut-ID', + name: 'attributeId', + type: 'number', + default: 0, + description: 'Die ID des benutzerdefinierten Attributs', + }, + { + displayName: 'Wert', + name: 'attributeValue', + type: 'string', + default: '', + description: 'Der Wert für dieses Attribut', + }, + ], + }, + ], + description: 'Benutzerdefinierte Attribute für diesen Benutzer setzen', }, { displayName: 'Benutzer-Filter', @@ -656,6 +842,41 @@ export class LibreBooking implements INodeType { displayOptions: { show: { resource: ['account'], operation: ['get', 'update', 'updatePassword'] } }, default: '', }, + // Custom Attributes für Accounts + { + displayName: 'Benutzerdefinierte Attribute', + name: 'accountCustomAttributes', + type: 'fixedCollection', + typeOptions: { + multipleValues: true, + }, + default: {}, + placeholder: 'Attribut hinzufügen', + displayOptions: { show: { resource: ['account'], operation: ['create', 'update'] } }, + options: [ + { + name: 'attribute', + displayName: 'Attribut', + values: [ + { + displayName: 'Attribut-ID', + name: 'attributeId', + type: 'number', + default: 0, + description: 'Die ID des benutzerdefinierten Attributs', + }, + { + displayName: 'Wert', + name: 'attributeValue', + type: 'string', + default: '', + description: 'Der Wert für dieses Attribut', + }, + ], + }, + ], + description: 'Benutzerdefinierte Attribute für dieses Konto setzen', + }, { displayName: 'Account-Daten', name: 'accountData', @@ -713,6 +934,7 @@ export class LibreBooking implements INodeType { required: true, displayOptions: { show: { resource: ['group'], operation: ['create', 'update'] } }, default: '', + description: 'Name der Gruppe (Pflichtfeld)', }, { displayName: 'Standard-Gruppe', @@ -788,6 +1010,7 @@ export class LibreBooking implements INodeType { required: true, displayOptions: { show: { resource: ['attribute'], operation: ['create', 'update'] } }, default: '', + description: 'Anzeigename des Attributs (Pflichtfeld)', }, { displayName: 'Attribut-Typ', @@ -832,6 +1055,9 @@ export class LibreBooking implements INodeType { const username = credentials.username as string; const pw = credentials.password as string; + // Config-Defaults laden + const configDefaults = await getConfigDefaults(this); + const session = await authenticate(this, baseUrl, username, pw); try { @@ -859,17 +1085,38 @@ export class LibreBooking implements INodeType { const resourceId = this.getNodeParameter('resourceId', i) as number; const startDateTime = this.getNodeParameter('startDateTime', i) as string; const endDateTime = this.getNodeParameter('endDateTime', i) as string; + const termsAccepted = this.getNodeParameter('termsAccepted', i, configDefaults.defaultTermsAccepted) as boolean; const title = this.getNodeParameter('title', i, '') as string; + const customAttributes = this.getNodeParameter('customAttributes', i, {}) as any; const additionalFields = this.getNodeParameter('additionalFields', i, {}) as any; - const body: any = { resourceId, startDateTime: new Date(startDateTime).toISOString(), endDateTime: new Date(endDateTime).toISOString() }; + + const body: any = { + resourceId, + startDateTime: new Date(startDateTime).toISOString(), + endDateTime: new Date(endDateTime).toISOString(), + termsAccepted, + }; + if (title) body.title = title; if (additionalFields.description) body.description = additionalFields.description; if (additionalFields.userId) body.userId = additionalFields.userId; if (additionalFields.resources) body.resources = parseIdList(additionalFields.resources); if (additionalFields.participants) body.participants = parseIdList(additionalFields.participants); if (additionalFields.invitees) body.invitees = parseIdList(additionalFields.invitees); - if (additionalFields.allowParticipation !== undefined) body.allowParticipation = additionalFields.allowParticipation; - if (additionalFields.termsAccepted !== undefined) body.termsAccepted = additionalFields.termsAccepted; + if (additionalFields.allowParticipation !== undefined) { + body.allowParticipation = additionalFields.allowParticipation; + } else { + body.allowParticipation = configDefaults.defaultAllowParticipation; + } + + // Custom Attributes verarbeiten + if (customAttributes?.attribute && customAttributes.attribute.length > 0) { + body.customAttributes = customAttributes.attribute.map((attr: any) => ({ + attributeId: attr.attributeId, + attributeValue: attr.attributeValue, + })); + } + responseData = await makeApiRequest(this, baseUrl, session, 'POST', '/Reservations/', body); } else if (operation === 'update') { const referenceNumber = this.getNodeParameter('referenceNumber', i) as string; @@ -877,8 +1124,15 @@ export class LibreBooking implements INodeType { const endDateTime = this.getNodeParameter('endDateTime', i) as string; const title = this.getNodeParameter('title', i, '') as string; const updateScope = this.getNodeParameter('updateScope', i, 'this') as string; + const customAttributes = this.getNodeParameter('customAttributes', i, {}) as any; const additionalFields = this.getNodeParameter('additionalFields', i, {}) as any; - const body: any = { startDateTime: new Date(startDateTime).toISOString(), endDateTime: new Date(endDateTime).toISOString() }; + + const body: any = { + startDateTime: new Date(startDateTime).toISOString(), + endDateTime: new Date(endDateTime).toISOString(), + termsAccepted: true, // termsAccepted wird auch bei Updates benötigt + }; + if (title) body.title = title; if (additionalFields.description) body.description = additionalFields.description; if (additionalFields.resourceId) body.resourceId = additionalFields.resourceId; @@ -886,6 +1140,16 @@ export class LibreBooking implements INodeType { if (additionalFields.resources) body.resources = parseIdList(additionalFields.resources); if (additionalFields.participants) body.participants = parseIdList(additionalFields.participants); if (additionalFields.invitees) body.invitees = parseIdList(additionalFields.invitees); + if (additionalFields.allowParticipation !== undefined) body.allowParticipation = additionalFields.allowParticipation; + + // Custom Attributes verarbeiten + if (customAttributes?.attribute && customAttributes.attribute.length > 0) { + body.customAttributes = customAttributes.attribute.map((attr: any) => ({ + attributeId: attr.attributeId, + attributeValue: attr.attributeValue, + })); + } + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Reservations/${referenceNumber}?updateScope=${updateScope}`, body); } else if (operation === 'delete') { const referenceNumber = this.getNodeParameter('referenceNumber', i) as string; @@ -927,8 +1191,11 @@ export class LibreBooking implements INodeType { } else if (operation === 'create') { const resourceName = this.getNodeParameter('resourceName', i) as string; const scheduleIdForResource = this.getNodeParameter('scheduleIdForResource', i) as number; + const resourceCustomAttributes = this.getNodeParameter('resourceCustomAttributes', i, {}) as any; const resourceOptions = this.getNodeParameter('resourceOptions', i, {}) as any; + const body: any = { name: resourceName, scheduleId: scheduleIdForResource }; + if (resourceOptions.location) body.location = resourceOptions.location; if (resourceOptions.contact) body.contact = resourceOptions.contact; if (resourceOptions.description) body.description = resourceOptions.description; @@ -940,12 +1207,24 @@ export class LibreBooking implements INodeType { if (resourceOptions.autoReleaseMinutes) body.autoReleaseMinutes = resourceOptions.autoReleaseMinutes; if (resourceOptions.color) body.color = resourceOptions.color; if (resourceOptions.statusId !== undefined) body.statusId = resourceOptions.statusId; + + // Custom Attributes verarbeiten + if (resourceCustomAttributes?.attribute && resourceCustomAttributes.attribute.length > 0) { + body.customAttributes = resourceCustomAttributes.attribute.map((attr: any) => ({ + attributeId: attr.attributeId, + attributeValue: attr.attributeValue, + })); + } + responseData = await makeApiRequest(this, baseUrl, session, 'POST', '/Resources/', body); } else if (operation === 'update') { const resourceIdParam = this.getNodeParameter('resourceIdParam', i) as number; const resourceName = this.getNodeParameter('resourceName', i) as string; + const resourceCustomAttributes = this.getNodeParameter('resourceCustomAttributes', i, {}) as any; const resourceOptions = this.getNodeParameter('resourceOptions', i, {}) as any; + const body: any = { name: resourceName }; + if (resourceOptions.location) body.location = resourceOptions.location; if (resourceOptions.contact) body.contact = resourceOptions.contact; if (resourceOptions.description) body.description = resourceOptions.description; @@ -957,6 +1236,15 @@ export class LibreBooking implements INodeType { if (resourceOptions.autoReleaseMinutes) body.autoReleaseMinutes = resourceOptions.autoReleaseMinutes; if (resourceOptions.color) body.color = resourceOptions.color; if (resourceOptions.statusId !== undefined) body.statusId = resourceOptions.statusId; + + // Custom Attributes verarbeiten + if (resourceCustomAttributes?.attribute && resourceCustomAttributes.attribute.length > 0) { + body.customAttributes = resourceCustomAttributes.attribute.map((attr: any) => ({ + attributeId: attr.attributeId, + attributeValue: attr.attributeValue, + })); + } + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Resources/${resourceIdParam}`, body); } else if (operation === 'delete') { const resourceIdParam = this.getNodeParameter('resourceIdParam', i) as number; @@ -999,35 +1287,59 @@ export class LibreBooking implements INodeType { } else if (operation === 'create') { const emailAddress = this.getNodeParameter('emailAddress', i) as string; const userName = this.getNodeParameter('userName', i) as string; - const pw = this.getNodeParameter('password', i) as string; + const userPw = this.getNodeParameter('password', i) as string; const firstName = this.getNodeParameter('firstName', i) as string; const lastName = this.getNodeParameter('lastName', i) as string; + const userCustomAttributes = this.getNodeParameter('userCustomAttributes', i, {}) as any; const userOptions = this.getNodeParameter('userOptions', i, {}) as any; - const body: any = { emailAddress, userName, password: pw, firstName, lastName }; - if (userOptions.timezone) body.timezone = userOptions.timezone; - if (userOptions.language) body.language = userOptions.language; + + const body: any = { emailAddress, userName, password: userPw, firstName, lastName }; + + body.timezone = userOptions.timezone || configDefaults.defaultTimezone; + body.language = userOptions.language || configDefaults.defaultLanguage; if (userOptions.phone) body.phone = userOptions.phone; if (userOptions.organization) body.organization = userOptions.organization; if (userOptions.position) body.position = userOptions.position; if (userOptions.groups) body.groups = parseIdList(userOptions.groups); + + // Custom Attributes verarbeiten + if (userCustomAttributes?.attribute && userCustomAttributes.attribute.length > 0) { + body.customAttributes = userCustomAttributes.attribute.map((attr: any) => ({ + attributeId: attr.attributeId, + attributeValue: attr.attributeValue, + })); + } + responseData = await makeApiRequest(this, baseUrl, session, 'POST', '/Users/', body); } else if (operation === 'update') { const userId = this.getNodeParameter('userId', i) as number; const firstName = this.getNodeParameter('firstName', i) as string; const lastName = this.getNodeParameter('lastName', i) as string; + const userCustomAttributes = this.getNodeParameter('userCustomAttributes', i, {}) as any; const userOptions = this.getNodeParameter('userOptions', i, {}) as any; + const body: any = { firstName, lastName }; + if (userOptions.timezone) body.timezone = userOptions.timezone; if (userOptions.language) body.language = userOptions.language; if (userOptions.phone) body.phone = userOptions.phone; if (userOptions.organization) body.organization = userOptions.organization; if (userOptions.position) body.position = userOptions.position; if (userOptions.groups) body.groups = parseIdList(userOptions.groups); + + // Custom Attributes verarbeiten + if (userCustomAttributes?.attribute && userCustomAttributes.attribute.length > 0) { + body.customAttributes = userCustomAttributes.attribute.map((attr: any) => ({ + attributeId: attr.attributeId, + attributeValue: attr.attributeValue, + })); + } + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Users/${userId}`, body); } else if (operation === 'updatePassword') { const userId = this.getNodeParameter('userId', i) as number; - const pw = this.getNodeParameter('password', i) as string; - responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Users/${userId}/Password`, { password: pw }); + const userPw = this.getNodeParameter('password', i) as string; + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Users/${userId}/Password`, { password: userPw }); } else if (operation === 'delete') { const userId = this.getNodeParameter('userId', i) as number; responseData = await makeApiRequest(this, baseUrl, session, 'DELETE', `/Users/${userId}`); @@ -1041,23 +1353,42 @@ export class LibreBooking implements INodeType { responseData = await makeApiRequest(this, baseUrl, session, 'GET', `/Accounts/${accountUserId}`); } else if (operation === 'create') { const accountData = this.getNodeParameter('accountData', i, {}) as any; + const accountCustomAttributes = this.getNodeParameter('accountCustomAttributes', i, {}) as any; + const body: any = {}; + if (accountData.emailAddress) body.emailAddress = accountData.emailAddress; if (accountData.userName) body.userName = accountData.userName; if (accountData.password) body.password = accountData.password; if (accountData.firstName) body.firstName = accountData.firstName; if (accountData.lastName) body.lastName = accountData.lastName; - if (accountData.timezone) body.timezone = accountData.timezone; - if (accountData.language) body.language = accountData.language; + body.timezone = accountData.timezone || configDefaults.defaultTimezone; + body.language = accountData.language || configDefaults.defaultLanguage; if (accountData.phone) body.phone = accountData.phone; if (accountData.organization) body.organization = accountData.organization; if (accountData.position) body.position = accountData.position; - if (accountData.acceptTermsOfService !== undefined) body.acceptTermsOfService = accountData.acceptTermsOfService; + if (accountData.acceptTermsOfService !== undefined) { + body.acceptTermsOfService = accountData.acceptTermsOfService; + } else { + body.acceptTermsOfService = configDefaults.defaultTermsAccepted; + } + + // Custom Attributes verarbeiten + if (accountCustomAttributes?.attribute && accountCustomAttributes.attribute.length > 0) { + body.customAttributes = accountCustomAttributes.attribute.map((attr: any) => ({ + attributeId: attr.attributeId, + attributeValue: attr.attributeValue, + })); + } + responseData = await makeApiRequest(this, baseUrl, session, 'POST', '/Accounts/', body); } else if (operation === 'update') { const accountUserId = this.getNodeParameter('accountUserId', i) as number; const accountData = this.getNodeParameter('accountData', i, {}) as any; + const accountCustomAttributes = this.getNodeParameter('accountCustomAttributes', i, {}) as any; + const body: any = {}; + if (accountData.emailAddress) body.emailAddress = accountData.emailAddress; if (accountData.userName) body.userName = accountData.userName; if (accountData.firstName) body.firstName = accountData.firstName; @@ -1067,6 +1398,15 @@ export class LibreBooking implements INodeType { if (accountData.phone) body.phone = accountData.phone; if (accountData.organization) body.organization = accountData.organization; if (accountData.position) body.position = accountData.position; + + // Custom Attributes verarbeiten + if (accountCustomAttributes?.attribute && accountCustomAttributes.attribute.length > 0) { + body.customAttributes = accountCustomAttributes.attribute.map((attr: any) => ({ + attributeId: attr.attributeId, + attributeValue: attr.attributeValue, + })); + } + responseData = await makeApiRequest(this, baseUrl, session, 'POST', `/Accounts/${accountUserId}`, body); } else if (operation === 'updatePassword') { const accountUserId = this.getNodeParameter('accountUserId', i) as number; diff --git a/nodes/LibreBookingTrigger/LibreBookingTrigger.node.ts b/nodes/LibreBookingTrigger/LibreBookingTrigger.node.ts index 5e2e9ae..7079dc8 100644 --- a/nodes/LibreBookingTrigger/LibreBookingTrigger.node.ts +++ b/nodes/LibreBookingTrigger/LibreBookingTrigger.node.ts @@ -20,9 +20,18 @@ interface ReservationData { title: string; resourceId: number; userId: number; + description?: string; + resourceName?: string; [key: string]: any; } +interface WorkflowStaticData { + seenIds?: string[]; + reservationHashes?: Record; + isFirstPoll?: boolean; + lastPollTime?: string; +} + /** * Authentifizierung bei LibreBooking */ @@ -174,14 +183,34 @@ function getTimeWindow(timeWindow: string): { start: string; end: string } { } /** - * Eindeutigen Schlüssel für Reservierung generieren + * Hash für Reservierung generieren (für Änderungserkennung) + * Nur relevante Felder berücksichtigen, die Änderungen anzeigen */ -function getReservationKey(reservation: ReservationData): string { - return `${reservation.referenceNumber}_${reservation.startDate}_${reservation.endDate}_${reservation.title || ''}`; +function getReservationHash(reservation: ReservationData): string { + const relevantData = { + referenceNumber: reservation.referenceNumber, + startDate: reservation.startDate, + endDate: reservation.endDate, + title: reservation.title || '', + description: reservation.description || '', + resourceId: reservation.resourceId, + resourceName: reservation.resourceName || '', + userId: reservation.userId, + requiresApproval: reservation.requiresApproval, + participants: reservation.participants || [], + invitees: reservation.invitees || [], + }; + return JSON.stringify(relevantData); } /** * LibreBooking Trigger Node + * + * Überwacht neue und geänderte Reservierungen in LibreBooking. + * + * WICHTIG: Beim ersten Poll werden nur die IDs/Hashes gespeichert, + * aber keine Events getriggert. Dies verhindert, dass alle + * existierenden Reservierungen als "neu" getriggert werden. */ export class LibreBookingTrigger implements INodeType { description: INodeTypeDescription = { @@ -210,12 +239,36 @@ export class LibreBookingTrigger implements INodeType { name: 'event', type: 'options', options: [ - { name: 'Neue Reservierung', value: 'newReservation', description: 'Wird bei neuen Reservierungen ausgelöst' }, - { name: 'Geänderte Reservierung', value: 'updatedReservation', description: 'Wird bei geänderten Reservierungen ausgelöst' }, - { name: 'Alle Reservierungen', value: 'allReservations', description: 'Wird bei neuen und geänderten Reservierungen ausgelöst' }, + { + name: 'Neue Reservierung', + value: 'newReservation', + description: 'Wird bei neuen Reservierungen ausgelöst (nicht beim ersten Poll)' + }, + { + name: 'Geänderte Reservierung', + value: 'updatedReservation', + description: 'Wird bei geänderten Reservierungen ausgelöst' + }, + { + name: 'Alle Reservierungen', + value: 'allReservations', + description: 'Wird bei neuen und geänderten Reservierungen ausgelöst' + }, ], default: 'newReservation', }, + { + displayName: 'Hinweis', + name: 'notice', + type: 'notice', + default: '', + displayOptions: { + show: { + event: ['newReservation', 'allReservations'], + }, + }, + description: 'Beim ersten Poll werden existierende Reservierungen gespeichert, aber nicht getriggert. Nur nachfolgende neue Reservierungen lösen den Trigger aus.', + }, { displayName: 'Filter', name: 'filters', @@ -247,7 +300,20 @@ export class LibreBookingTrigger implements INodeType { placeholder: 'Option hinzufügen', default: {}, options: [ - { displayName: 'Detaillierte Daten Abrufen', name: 'fetchDetails', type: 'boolean', default: false }, + { + displayName: 'Detaillierte Daten Abrufen', + name: 'fetchDetails', + type: 'boolean', + default: false, + description: 'Ruft vollständige Reservierungsdaten ab (zusätzliche API-Aufrufe)', + }, + { + displayName: 'Debug-Modus', + name: 'debugMode', + type: 'boolean', + default: false, + description: 'Gibt zusätzliche Debug-Informationen aus', + }, ], }, ], @@ -264,8 +330,11 @@ export class LibreBookingTrigger implements INodeType { const timeWindow = this.getNodeParameter('timeWindow', '14days') as string; const options = this.getNodeParameter('options', {}) as any; - const workflowStaticData = this.getWorkflowStaticData('node'); - const previousReservations = (workflowStaticData.reservations as Record) || {}; + // Workflow Static Data für State-Management + const webhookData = this.getWorkflowStaticData('node') as WorkflowStaticData; + + // Debug-Modus + const debugMode = options.debugMode || false; let session: LibreBookingSession; try { @@ -287,31 +356,54 @@ export class LibreBookingTrigger implements INodeType { ); const returnData: INodeExecutionData[] = []; - const currentReservations: Record = {}; - for (const reservation of reservations) { - const refNumber = reservation.referenceNumber; - const reservationKey = getReservationKey(reservation); - currentReservations[refNumber] = reservationKey; - - const isNew = !previousReservations[refNumber]; - const isUpdated = previousReservations[refNumber] && previousReservations[refNumber] !== reservationKey; - - let shouldTrigger = false; - let eventType = ''; - - if (event === 'newReservation' && isNew) { - shouldTrigger = true; - eventType = 'new'; - } else if (event === 'updatedReservation' && isUpdated) { - shouldTrigger = true; - eventType = 'updated'; - } else if (event === 'allReservations' && (isNew || isUpdated)) { - shouldTrigger = true; - eventType = isNew ? 'new' : 'updated'; + // ========================================== + // EVENT: Neue Reservierungen + // ========================================== + if (event === 'newReservation') { + // Initialisiere seenIds beim ersten Poll + if (!webhookData.seenIds) { + webhookData.seenIds = []; + webhookData.isFirstPoll = true; } - if (shouldTrigger) { + const currentIds = reservations.map((r: ReservationData) => r.referenceNumber); + + // Beim ersten Poll: Nur IDs speichern, NICHT triggern + if (webhookData.isFirstPoll) { + webhookData.seenIds = currentIds; + webhookData.isFirstPoll = false; + webhookData.lastPollTime = new Date().toISOString(); + + if (debugMode) { + return [[{ + json: { + _debug: true, + _message: 'Erster Poll - IDs wurden gespeichert, keine Events getriggert', + _savedIds: currentIds.length, + _timestamp: webhookData.lastPollTime, + }, + }]]; + } + + return null; // Nichts triggern beim ersten Poll + } + + // Nur NEUE Reservierungen (die wir noch nicht gesehen haben) + const newReservations = reservations.filter((r: ReservationData) => + !webhookData.seenIds!.includes(r.referenceNumber) + ); + + // Update seenIds mit allen aktuellen IDs + webhookData.seenIds = currentIds; + webhookData.lastPollTime = new Date().toISOString(); + + if (newReservations.length === 0) { + return null; + } + + // Neue Reservierungen verarbeiten + for (const reservation of newReservations) { let reservationData = reservation; if (options.fetchDetails) { @@ -320,7 +412,7 @@ export class LibreBookingTrigger implements INodeType { this, baseUrl, session, - refNumber, + reservation.referenceNumber, ); } catch (error) { reservationData = reservation; @@ -330,14 +422,177 @@ export class LibreBookingTrigger implements INodeType { returnData.push({ json: { ...reservationData, - _eventType: eventType, + _eventType: 'new', _triggeredAt: new Date().toISOString(), }, }); } } - workflowStaticData.reservations = currentReservations; + // ========================================== + // EVENT: Geänderte Reservierungen + // ========================================== + else if (event === 'updatedReservation') { + // Initialisiere reservationHashes beim ersten Poll + if (!webhookData.reservationHashes) { + webhookData.reservationHashes = {}; + webhookData.isFirstPoll = true; + } + + // Beim ersten Poll: Nur Hashes speichern, NICHT triggern + if (webhookData.isFirstPoll) { + for (const reservation of reservations) { + webhookData.reservationHashes[reservation.referenceNumber] = getReservationHash(reservation); + } + webhookData.isFirstPoll = false; + webhookData.lastPollTime = new Date().toISOString(); + + if (debugMode) { + return [[{ + json: { + _debug: true, + _message: 'Erster Poll - Hashes wurden gespeichert, keine Events getriggert', + _savedHashes: Object.keys(webhookData.reservationHashes).length, + _timestamp: webhookData.lastPollTime, + }, + }]]; + } + + return null; // Nichts triggern beim ersten Poll + } + + // Geänderte Reservierungen finden + const updatedReservations: ReservationData[] = []; + const newHashes: Record = {}; + + for (const reservation of reservations) { + const currentHash = getReservationHash(reservation); + const oldHash = webhookData.reservationHashes[reservation.referenceNumber]; + newHashes[reservation.referenceNumber] = currentHash; + + // Nur als "geändert" markieren, wenn: + // 1. Wir die Reservierung schon kennen (nicht neu) + // 2. Der Hash sich geändert hat + if (oldHash && currentHash !== oldHash) { + updatedReservations.push(reservation); + } + } + + // Update Hashes mit allen aktuellen Reservierungen + webhookData.reservationHashes = newHashes; + webhookData.lastPollTime = new Date().toISOString(); + + if (updatedReservations.length === 0) { + return null; + } + + // Geänderte Reservierungen verarbeiten + for (const reservation of updatedReservations) { + let reservationData = reservation; + + if (options.fetchDetails) { + try { + reservationData = await getReservationDetails( + this, + baseUrl, + session, + reservation.referenceNumber, + ); + } catch (error) { + reservationData = reservation; + } + } + + returnData.push({ + json: { + ...reservationData, + _eventType: 'updated', + _triggeredAt: new Date().toISOString(), + }, + }); + } + } + + // ========================================== + // EVENT: Alle Reservierungen (Neu + Geändert) + // ========================================== + else if (event === 'allReservations') { + // Initialisiere beide Tracking-Strukturen beim ersten Poll + if (!webhookData.seenIds || !webhookData.reservationHashes) { + webhookData.seenIds = []; + webhookData.reservationHashes = {}; + webhookData.isFirstPoll = true; + } + + // Beim ersten Poll: IDs und Hashes speichern, NICHT triggern + if (webhookData.isFirstPoll) { + webhookData.seenIds = reservations.map((r: ReservationData) => r.referenceNumber); + for (const reservation of reservations) { + webhookData.reservationHashes[reservation.referenceNumber] = getReservationHash(reservation); + } + webhookData.isFirstPoll = false; + webhookData.lastPollTime = new Date().toISOString(); + + if (debugMode) { + return [[{ + json: { + _debug: true, + _message: 'Erster Poll - IDs und Hashes wurden gespeichert, keine Events getriggert', + _savedIds: webhookData.seenIds.length, + _savedHashes: Object.keys(webhookData.reservationHashes).length, + _timestamp: webhookData.lastPollTime, + }, + }]]; + } + + return null; + } + + const newHashes: Record = {}; + const currentIds: string[] = []; + + for (const reservation of reservations) { + const refNumber = reservation.referenceNumber; + const currentHash = getReservationHash(reservation); + + currentIds.push(refNumber); + newHashes[refNumber] = currentHash; + + const isNew = !webhookData.seenIds!.includes(refNumber); + const oldHash = webhookData.reservationHashes![refNumber]; + const isUpdated = oldHash && currentHash !== oldHash; + + if (isNew || isUpdated) { + let reservationData = reservation; + + if (options.fetchDetails) { + try { + reservationData = await getReservationDetails( + this, + baseUrl, + session, + refNumber, + ); + } catch (error) { + reservationData = reservation; + } + } + + returnData.push({ + json: { + ...reservationData, + _eventType: isNew ? 'new' : 'updated', + _triggeredAt: new Date().toISOString(), + }, + }); + } + } + + // Update State + webhookData.seenIds = currentIds; + webhookData.reservationHashes = newHashes; + webhookData.lastPollTime = new Date().toISOString(); + } if (returnData.length === 0) { return null; diff --git a/package.json b/package.json index 67bb1ee..eeb3723 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "n8n-nodes-librebooking", - "version": "1.1.0", + "version": "1.2.0", "description": "n8n Node für LibreBooking - Ressourcen- und Reservierungsverwaltung", "keywords": [ "n8n-community-node-package", @@ -60,7 +60,8 @@ "n8n": { "n8nNodesApiVersion": 1, "credentials": [ - "dist/credentials/LibreBookingApi.credentials.js" + "dist/credentials/LibreBookingApi.credentials.js", + "dist/credentials/LibreBookingConfig.credentials.js" ], "nodes": [ "dist/nodes/LibreBooking/LibreBooking.node.js", diff --git a/test-workflows/example-workflows.json b/test-workflows/example-workflows.json new file mode 100644 index 0000000..558460e --- /dev/null +++ b/test-workflows/example-workflows.json @@ -0,0 +1,344 @@ +{ + "name": "LibreBooking v1.2.0 Test Workflows", + "description": "Beispiel-Workflows für die neuen Features in Version 1.2.0", + "workflows": [ + { + "name": "01 - Reservierung mit Custom Attributes erstellen", + "description": "Erstellt eine Reservierung mit benutzerdefinierten Attributen", + "nodes": [ + { + "type": "n8n-nodes-base.manualTrigger", + "name": "Manuell starten", + "position": [250, 300] + }, + { + "type": "n8n-nodes-librebooking.libreBooking", + "name": "Attribute abrufen", + "parameters": { + "resource": "attribute", + "operation": "getByCategory", + "categoryId": 1 + }, + "position": [450, 300] + }, + { + "type": "n8n-nodes-librebooking.libreBooking", + "name": "Reservierung erstellen", + "parameters": { + "resource": "reservation", + "operation": "create", + "resourceId": 1, + "startDateTime": "={{ $now.plus(1, 'day').toFormat('yyyy-MM-dd') }}T10:00:00", + "endDateTime": "={{ $now.plus(1, 'day').toFormat('yyyy-MM-dd') }}T11:00:00", + "termsAccepted": true, + "title": "Test Reservierung mit Attributen", + "customAttributes": { + "attribute": [ + { + "attributeId": 1, + "attributeValue": "Mein Attribut-Wert" + } + ] + } + }, + "position": [650, 300] + } + ], + "connections": { + "Manuell starten": { + "main": [ + [{ "node": "Attribute abrufen", "type": "main", "index": 0 }] + ] + }, + "Attribute abrufen": { + "main": [ + [{ "node": "Reservierung erstellen", "type": "main", "index": 0 }] + ] + } + } + }, + { + "name": "02 - Ressource mit Custom Attributes erstellen", + "description": "Erstellt eine Ressource mit benutzerdefinierten Attributen", + "nodes": [ + { + "type": "n8n-nodes-base.manualTrigger", + "name": "Manuell starten", + "position": [250, 300] + }, + { + "type": "n8n-nodes-librebooking.libreBooking", + "name": "Ressource erstellen", + "parameters": { + "resource": "resource", + "operation": "create", + "resourceName": "Testraum mit Ausstattung", + "scheduleIdForResource": 1, + "resourceCustomAttributes": { + "attribute": [ + { + "attributeId": 10, + "attributeValue": "Beamer, Whiteboard, 20 Plätze" + } + ] + }, + "resourceOptions": { + "description": "Ein Konferenzraum mit voller Ausstattung", + "maxParticipants": 20 + } + }, + "position": [450, 300] + } + ], + "connections": { + "Manuell starten": { + "main": [ + [{ "node": "Ressource erstellen", "type": "main", "index": 0 }] + ] + } + } + }, + { + "name": "03 - Trigger für neue Reservierungen (ohne Altdaten)", + "description": "Überwacht neue Reservierungen - beim ersten Start werden existierende Reservierungen NICHT getriggert", + "nodes": [ + { + "type": "n8n-nodes-librebooking.libreBookingTrigger", + "name": "Neue Reservierungen", + "parameters": { + "event": "newReservation", + "timeWindow": "14days", + "options": { + "fetchDetails": false, + "debugMode": true + } + }, + "position": [250, 300] + }, + { + "type": "n8n-nodes-base.if", + "name": "Debug-Check", + "parameters": { + "conditions": { + "boolean": [ + { + "value1": "={{ $json._debug }}", + "value2": true + } + ] + } + }, + "position": [450, 300] + }, + { + "type": "n8n-nodes-base.set", + "name": "Debug-Info", + "parameters": { + "values": { + "string": [ + { + "name": "info", + "value": "Erster Poll - Daten wurden gespeichert" + } + ] + } + }, + "position": [650, 200] + }, + { + "type": "n8n-nodes-base.set", + "name": "Neue Reservierung verarbeiten", + "parameters": { + "values": { + "string": [ + { + "name": "message", + "value": "Neue Reservierung: {{ $json.title }}" + } + ] + } + }, + "position": [650, 400] + } + ], + "connections": { + "Neue Reservierungen": { + "main": [ + [{ "node": "Debug-Check", "type": "main", "index": 0 }] + ] + }, + "Debug-Check": { + "main": [ + [{ "node": "Debug-Info", "type": "main", "index": 0 }], + [{ "node": "Neue Reservierung verarbeiten", "type": "main", "index": 0 }] + ] + } + } + }, + { + "name": "04 - Trigger für geänderte Reservierungen", + "description": "Überwacht Änderungen an bestehenden Reservierungen mittels Hash-Vergleich", + "nodes": [ + { + "type": "n8n-nodes-librebooking.libreBookingTrigger", + "name": "Geänderte Reservierungen", + "parameters": { + "event": "updatedReservation", + "timeWindow": "14days", + "options": { + "fetchDetails": true, + "debugMode": false + } + }, + "position": [250, 300] + }, + { + "type": "n8n-nodes-base.set", + "name": "Änderung protokollieren", + "parameters": { + "values": { + "string": [ + { + "name": "message", + "value": "Reservierung geändert: {{ $json.referenceNumber }} - {{ $json.title }}" + }, + { + "name": "changedAt", + "value": "={{ $json._triggeredAt }}" + } + ] + } + }, + "position": [450, 300] + } + ], + "connections": { + "Geänderte Reservierungen": { + "main": [ + [{ "node": "Änderung protokollieren", "type": "main", "index": 0 }] + ] + } + } + }, + { + "name": "05 - Config Node Verwendung", + "description": "Zeigt die Verwendung des LibreBooking Config Credentials für Standardwerte", + "notes": "Voraussetzung: LibreBooking Config Credential muss angelegt und mit dem Node verbunden sein", + "nodes": [ + { + "type": "n8n-nodes-base.manualTrigger", + "name": "Manuell starten", + "position": [250, 300] + }, + { + "type": "n8n-nodes-librebooking.libreBooking", + "name": "Reservierung mit Defaults", + "parameters": { + "resource": "reservation", + "operation": "create", + "resourceId": 1, + "startDateTime": "={{ $now.plus(2, 'day').toFormat('yyyy-MM-dd') }}T14:00:00", + "endDateTime": "={{ $now.plus(2, 'day').toFormat('yyyy-MM-dd') }}T15:00:00", + "title": "Reservierung mit Config-Defaults" + }, + "credentials": { + "libreBookingApi": "LibreBooking API", + "libreBookingConfig": "LibreBooking Config" + }, + "position": [450, 300], + "notes": "termsAccepted und allowParticipation werden aus dem Config Node übernommen" + } + ], + "connections": { + "Manuell starten": { + "main": [ + [{ "node": "Reservierung mit Defaults", "type": "main", "index": 0 }] + ] + } + } + }, + { + "name": "06 - Alle Events überwachen", + "description": "Überwacht sowohl neue als auch geänderte Reservierungen", + "nodes": [ + { + "type": "n8n-nodes-librebooking.libreBookingTrigger", + "name": "Alle Reservierungs-Events", + "parameters": { + "event": "allReservations", + "timeWindow": "30days", + "filters": { + "resourceId": "" + }, + "options": { + "fetchDetails": true + } + }, + "position": [250, 300] + }, + { + "type": "n8n-nodes-base.switch", + "name": "Event-Typ prüfen", + "parameters": { + "dataType": "string", + "value1": "={{ $json._eventType }}", + "rules": { + "rules": [ + { + "value2": "new" + }, + { + "value2": "updated" + } + ] + } + }, + "position": [450, 300] + }, + { + "type": "n8n-nodes-base.set", + "name": "Neue Reservierung", + "parameters": { + "values": { + "string": [ + { + "name": "action", + "value": "NEU: {{ $json.title }}" + } + ] + } + }, + "position": [650, 200] + }, + { + "type": "n8n-nodes-base.set", + "name": "Geänderte Reservierung", + "parameters": { + "values": { + "string": [ + { + "name": "action", + "value": "GEÄNDERT: {{ $json.title }}" + } + ] + } + }, + "position": [650, 400] + } + ], + "connections": { + "Alle Reservierungs-Events": { + "main": [ + [{ "node": "Event-Typ prüfen", "type": "main", "index": 0 }] + ] + }, + "Event-Typ prüfen": { + "main": [ + [{ "node": "Neue Reservierung", "type": "main", "index": 0 }], + [{ "node": "Geänderte Reservierung", "type": "main", "index": 0 }] + ] + } + } + } + ] +} diff --git a/upload-to-git.sh b/upload-to-git.sh new file mode 100755 index 0000000..d20eabd --- /dev/null +++ b/upload-to-git.sh @@ -0,0 +1,149 @@ +#!/bin/bash + +# ============================================================================= +# Git Upload Helper Script +# LibreBooking n8n Node v1.2.0 +# ============================================================================= + +set -e + +echo "🚀 Git Upload Vorbereitung" +echo "=========================" +echo "" + +# Prüfe ob Git installiert ist +if ! command -v git &> /dev/null; then + echo "❌ Git ist nicht installiert!" + echo " Installiere mit: sudo apt install git" + exit 1 +fi + +# Prüfe ob Git Repository existiert +if [ ! -d .git ]; then + echo "❌ Kein Git Repository gefunden!" + echo " Möchtest du eines initialisieren? (y/n)" + read -p " > " init_git + if [[ $init_git =~ ^[Yy]$ ]]; then + git init + echo "✅ Git Repository initialisiert" + else + echo "Abgebrochen." + exit 1 + fi +fi + +# Prüfe ob Remote existiert +echo "" +echo "📡 Remote Konfiguration:" +if git remote | grep -q origin; then + current_remote=$(git remote get-url origin 2>/dev/null || echo "nicht konfiguriert") + echo " Aktueller Remote: $current_remote" + echo "" + read -p " Möchtest du den Remote ändern? (y/n) " change_remote + if [[ $change_remote =~ ^[Yy]$ ]]; then + git remote remove origin + echo " Remote entfernt." + fi +fi + +if ! git remote | grep -q origin; then + echo "" + echo "📝 Bitte Git Remote URL eingeben:" + echo " Beispiele:" + echo " - https://github.com/USERNAME/n8n-nodes-librebooking.git" + echo " - https://gitlab.com/USERNAME/n8n-nodes-librebooking.git" + echo " - git@github.com:USERNAME/n8n-nodes-librebooking.git" + echo "" + read -p " URL: " remote_url + if [ -z "$remote_url" ]; then + echo "❌ Keine URL eingegeben. Abgebrochen." + exit 1 + fi + git remote add origin "$remote_url" + echo "✅ Remote hinzugefügt: $remote_url" +fi + +# Status anzeigen +echo "" +echo "📊 Git Status:" +echo "─────────────────────────────────────" +git status --short +echo "─────────────────────────────────────" + +# Anzahl der Änderungen +changed_files=$(git status --porcelain | wc -l) +if [ "$changed_files" -gt 0 ]; then + echo " $changed_files Datei(en) mit Änderungen" +else + echo " Keine uncommitteten Änderungen" +fi + +# Branch Information +echo "" +echo "🌿 Branch: $(git branch --show-current 2>/dev/null || echo 'kein Branch')" + +# Bestätigung für Commit +if [ "$changed_files" -gt 0 ]; then + echo "" + read -p "Möchtest du alle Änderungen committen? (y/n) " -n 1 -r + echo + if [[ $REPLY =~ ^[Yy]$ ]]; then + git add . + echo "" + echo "📝 Commit Message (Enter für Standard):" + read -p " > " commit_msg + if [ -z "$commit_msg" ]; then + commit_msg="feat: LibreBooking n8n Node v1.2.0" + fi + git commit -m "$commit_msg" + echo "✅ Commit erstellt" + fi +fi + +# Push +echo "" +read -p "Möchtest du zum Remote pushen? (y/n) " -n 1 -r +echo +if [[ $REPLY =~ ^[Yy]$ ]]; then + echo "" + echo "🚀 Pushe zum Remote..." + + # Branch auf main umbenennen falls nötig + current_branch=$(git branch --show-current) + if [ "$current_branch" != "main" ] && [ "$current_branch" != "master" ]; then + read -p " Branch '$current_branch' zu 'main' umbenennen? (y/n) " rename_branch + if [[ $rename_branch =~ ^[Yy]$ ]]; then + git branch -M main + echo " ✅ Branch umbenannt zu 'main'" + fi + fi + + git push -u origin $(git branch --show-current) + echo "✅ Code gepusht!" + + # Tags pushen + if git tag | grep -q "."; then + echo "" + read -p "Möchtest du auch alle Tags pushen? (y/n) " -n 1 -r + echo + if [[ $REPLY =~ ^[Yy]$ ]]; then + git push origin --tags + echo "✅ Tags gepusht!" + fi + fi + + echo "" + echo "═══════════════════════════════════════" + echo "✅ Erfolgreich hochgeladen!" + echo "═══════════════════════════════════════" + echo "" + echo "📋 Nächste Schritte:" + echo " 1. Repository auf GitHub/GitLab prüfen" + echo " 2. README.md URLs anpassen" + echo " 3. Release erstellen (optional)" +else + echo "❌ Push abgebrochen" +fi + +echo "" +echo "Fertig! 🎉"