大家好,又见面了,我是你们的朋友全栈君。
话说,springboot不是一个全新的框架,它只是将其它框架整合在一起,提供一个”开箱即用”的环境。此文,利用的正是SpringMVC的功能。
创建springboot项目:https://blog.csdn.net/weixin_41381863/article/details/106504682
文件上传
在开发中,文件上传常用的有两种方式。
一、利用base64上传文件
思路:客户端将要上传的文件转为base64的二进制数据,服务端利用字符串的形式接收参数,然后将base64转为相应的文件。
base64测试数据:
代码语言:javascript复制/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释
* data:image/jpg;base64,R0lGODlh9AH0AfcAAAwSCxgjGQgrGQ42JQs/GgtXIRJDKBJJLhVcKhxQOCZNMy40KDxAN0FEPj9NOCllQRpsMwlwLgx9NxWIOBGPOCSOQS2ZOTadMzeVNTp7T0JpTktuVEtXSVNZT1thVmVoYWZvZV92YVx7ZFyJaWmQcm6Ac3d8c3mJeYGHgYWHh4eMiImPj5GUjZSchYeei32liH tiYq4j3e0eHqqaIiuVoeuRnmoPWydT1KaVFqePVafJ2edIHOrHHmnLn2wJY26GZG Fo25Joq7Mo23P564U569a6TDeJ hnaKopqqqqbOzrqa8p5u8n5vSoqXIlbvOlMDPn8DQprrBuMLCv8THwbzRvL7cucDews3kwMzYx9HSzdTU0tDbz9Xmz D30eP72eP72eT72eT72eT72eT72ef42ub02 fv3OTr2N3h0tvd0tre1tzf29zj3eLi4efn5unq6eTz6On26uvx6ezs7Ovq9e3u8u/x7/P16/L18fP09fH29O339/b29/f4 Pr6 wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEBAAAh QQADAAAACwAAAAA9AH0AQAI/gDDCBxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVq1izat3KtavXr2DDih1LtqzZs2jTql3Ltq3bt3Djyp1Lt67du3jz6t3Lt6/fv4ADCx5MuLDhw4gTK17MuLHjx5AjS55MubLly5gza97MubPnz6BDix5NurTp06hTq17NurXr17Bjy55Nu7bt27hz697Nu7fv38CDCx9OvLjx48iTK1/OvLnz59CjS59Ovbr169iza9/Ovbv37 DD/osfT768 fPo06tfz769 /fw48ufT7 /fv48 vfz7 ///8ABijggAQWaOCBCCao4IIMNujggxBGKOGEFFZo4YUYZqjhhhx26OGHIIYo4ogklmjiiSimqOKKLLbo4oswxijjjDTWaOONOOao44489ujjj0AGKWRuXmRRhRJIJinFklRQkcWTUELJxZRpVFnlGm2goeWWZ5xhxpdgftnlmFuWaeaZaKZppZVdtNnFlFE eYWRVdRZ55NdfDEkT1MckYIJgAaKQgorHHEEEogiocSSjE7RZJNabLGGG2 8AcelcNyh6aacakoHHG64wcYapJZq6qmoprrFqo8 OsUU/lIokaihR7DAwgosoBAooCmwoEQWe r0hRIrmOCBBx8k wGvLByKaBJJLBqrFI4 ugUbb9Dhxx/c/uHHtt92y 23fuxx6RturCFpqqiu6u678GrRKhWwxqpEEkjQaqsKKfwJAgjKmqACElKYESxOXyRRrLIfgFCCCSio0GyiSEC7qBJLSPFoFly0EYcc4pIr8rd4lIyHHHLEEUcbbXKxRZwwxwxzpFrIOy jSCJaqwss8JuCroB 4AEIKRyhRBwH46QECyksO6gKuNp6RBJLVC2tFFUsWa2TXXgsRx4i4zEuuSaXjLKWLT8577wyxwzvqmpTkTXGS1B8658mLJus/glFH530TVKkUEIHxxb QQgllHDCCSi84MLjjj/uQgwxTM4EE1UvcTWjSybp b35HtHC47RKbvrklKeu upMUHw5E5SbjsLiJyRewr9CE44s4ixIQcbfNknhAQcLFG/8Agoo4AAHHGjg/AYbZAA99COMIMIIJGR/wguOt D999/bKn7PtJ9AQgnZp6/ utX7/778Ls/PfTOa8D8Aw00wAADC y/vAYn4ALwbPICBQwAAAhMIAAEIAACEMAABzgAAiaIAAhY8AEZyCAONniDGXjQg D7XhFGOMIPmtCD2Ytf9TYYvwy68IUwzGAFZviAGtYwAQk4gAEMMIABBOCH/gFg4AAOMIIB2oQEBhCAAhcogAE4EIITtKAFJ0BFC2BggzOQgRaNwEUnOOEJYAyjGJ/AxTIagYRZ1KIa18hGGWzwjXCMIxwtMMMKZNCGEMBhDnvIxx4eIAFFNOJMvkACBRCAgYhkoAMdeIACRMCCEqAiFStggQvkAItb7KIXx/gEL3rSCVxUowfbqEUPyhEHF7jAHC3Ayla2so51hCQEEIBDHfaxhwZIwANG4AVByqQLGjDAIRPZwCc2MgLIlEAkqUgBV6oSB2lUYyhJ2cYZnBKVqczmBVzJzQ1yk5WwhCUFJqBMCViQlhEcQCIZCQERLMGXMVnCAw4wTGIukgAF/pggMiNQzgmEs5LPvKZA36jNbxo0nJQEJ0IpQIEZMvShytwnAgoQQR6ukwAHgEAGTqAneLpkBMmrJwOZeM8CmDSZ/KzAJBHK0joqFKF0rAAOKDnDStJRoS tAEMdqtOG9vShQCXnPiMw0QIIU6SKlOADNtAFj7YECxpQwAGUyEQEKnKRJj1pMlUqgZbWcaX 9CpOaUrJbdLUp2hVaR0butOfBpWKEthnVk3qQGIqEgE1jEFHnZqSQuqQqgpEpAPnelII8LOcXV2pMmcoycZO0qc6jWlMcSDZmn41rP4E6wSayUqgPrQCESCnYed6z5ESM5cYbCpfUeKFISYRsFYt/uZgB7tPKVIRAo61gGN3y9sJgNMCnP0mBjBQAQyAlbGSRKYkm nbxoZ2tFm9p0gTyMADzPOdqz3JCyCoziWuM58FIEAUpThcDEAAAxcYbk2taNbyute9rCQuelOZA4Cmcr7lTe8U0avS/JqVsemdwHmHS14IiBcBiyQmdQ3wgARoAAvZLQkWcjlV7yLSuhnIAQZyoGEdeFgHQviwDmwQYg XWAgn9oGKQVwDG9ggBx4uL4iFUAMQ26DFPRACiT1cAxjrIAc3ADKHgTyDS LAuBa4pIYxMAMbDHfE5sVABiAQXgUnkAC6PAAMIkySE QyiYFN5APce4Maf9gHJd6B/ol9sAM0s1nFPOCBEODMgx7UQAg5JvGTfTAEIQzBwzbo84znLOcPv/jHNuiBDmrQ4yBfwLcXCPJwcQzoJeNgykgNrHUdDGEug8QKUhUmYO05ZSm6eAdqxkAP1KwDH gAA27eAYp5wGo509rQH2b0eVmMYg 7WQdynjWbddADG7ya2IDuMYcfPQEMBPnViU40oN9b15EGFqMPUMAJPP0RQhrAkNZm4lUzgIGJQmAHPbg1Bow9YidDQAdDULSfU83iGGNg0ce2AQ12nQMXl/jXwRYCD4ZdbB28 9UYEAINYIwB3Tabw69G96oBjXApVzncVyZAgzWgWm5vZAmGfG2Y/hVZAAIj4N6y3gG5a7DhHp/XxdAewg6it4Mh1Li8OSjyvWlQhCePmAg08LCdhYCBHcQ52LTuwZ8tqANWtxjhlLw3w9E97JrH2IIYqOcSF4jlBCiABB7fyBc04Nqti5sAUcY6BJ5 bqIX/N1mHvHSi/5nYHvY6sRusc JPedWzxkDAzfxEHhA7ETfG aL7nDF201xZB8b4Tio9qgFm7wHXCHsGYmBAcG89bse ckaNryqd/BuF/e7B09mdL5roOLW89nFMAe9i1kv6yH8WceupvGHc9zvpy 6BjeQdHk7CO0bHNrDS76i5Km74D8GEvMVAeYOCWB2khZgyu49 OEN/i51hoOe4YgWMaCPj QfD1noOxa/97vv/SFzuOHnFTJ635/9AS/f7AL44wOsAP2KFHCHsLVAseVAFCRFFTRcHEZeCAcBVoRe74Vf94VfdORP9rVN2qQD2SRfBHZe6UVgDuiAyLVhSGZyAkZl4CV5AWhV30ZEvdR/EdEFCrBDIkdd9iRdJnVy78eADhdaKtVboSVJKvWDjTWBmTUB21RFk RwkiRFTBiE/NRYy0RFQ VIhFVaGEddAyBVClAFLggRXlACQ9RdFiZYJXWDj2RFEyCEaUhJveVPUZhcmzVOm VKm0VJDxWHvDVFJViCPQiFyxRXj2RB VRU0oVxo/Zl/hvQaV3IEFIgAACYQAHQebI1WGYYiLUFV6DVWwwVh8rkhjrFTMHlWXfIUIvFVf0UVxG1WeTkh3AlWqM1S7OVYOEWiQk0ADlkAC6wiAyBBSDgiGIIALRIg5NIiYNoWKEVhRJAAcmYhm/YiaToWJ71VQ41ipvYVX1ITv2UhnC1jKoYSXElWo ETHNFTyioRMG4QBBkABvAhbqYEC3APwuQgmEmXcRIVMaIin9IipGkjMmojM/IVT0IVJ3lW8DVTON0h7zljd74g5HEVeOkkOXET0SVT1RGjiiIfweQPC/Qgu1YEFcAAgGwAOc4hsOIT1Q4VBGFWP24j/y4iQ ZWRLg/nDMRZAqVZADqYSghYytmIZC2FArmViIJZH6ZIJWeIUJ9G3qiF0dORBfcAQMEJIjGVsXVYYR4Ej7BIgKeY291ZBASIHKCE7NZlzopVtgKYUwGZOdyIyruFkR8Ik eYwSOVQCFl5FKY8CEIMKUAJlsJQDIQUhAETVR4Y2mFVDhZLm1FtaSYHx9V79JWOvFoEBxoaYNUm55VgxKYd9iIqFKY50KYt2OQA7pAFKuZQn8JRRSYNlSJhVWZid6HCVFJYP6F4i5mOz WFABnuw12PIh3wWyGysBGnHpYS8tZmkVYiJFFigqQAbgDR8KQLxaJdXZZLgNVFymVusRF WNGS4/gl7OVADtmdz3slo4jme5MloNNBiwWcDwed 2DlfivlKyOVYcSmOVZlV01eOVNVEO2R5fBkGG/CLFnZPEzWU88lMv5VNEDd7NUADDNqg5/mdEPqd22lsLpZnJOZ GLpslpRe6ZVQrwSWXAWHESlRWaVDwtRDdsVAEKQAUtCfZBeANYhPA4oA yRUy9RK2gRx3clo30kEPgp0RGB7QYpifYZi7AZx91abP4aBPzZfHAqZ65VQweVb1wiRxGlSJtpD JlLCTCa7cgBACpuxWQAWUWjhvmEBFmBCdpifgahPxqkQzCkfkZiQuBjPrZhTKqhOVBQ2QRQDddwacpZaUql/pYZUVeKpTvkREjliF7npbr4opK4SBBkUvcIiGiaptqUSiOmYxH6phFapNxpfvRVX32aqabapwa1TWQJXM0lokI1nxM5V/dpVxjVpS4apiRlTAlQAFK0kGjqTPalA8aHYkTqpkHqoxAaqhuaSqiUZHtqAdi0oRVwSel1ScMVYKrqob4lh/JZARBpqbFqnzy0qLb4AI66iA8QpmRIWI9kjajohsCaTSPmAzlWrHGKrJ86Z kHY/SFTXuKndhZgc16XxWQSjhKVpSEW0cIhShVW dEUbPaROrURDjEBP3pAIc0hsSoTynFk/vYVTh6gTZAr8Tao/gaoXgmbUuanf96/qouq6oGW0kN14DqRVMxuae3JUnmVJgPG0E6RAAoiqIUmwAWy5cYC6PRqVVXmUyYyFDXmaOJRqxteq9wCqHE2gNYy26i rIve510dIStZIRrVUW/KWBRuJmcSVFZOrGIZItEe7EZO3JYZZWbqbO6xVmZmgPEimYli6xD p1E2gP0eqQtm6kVuKHU rTXOU5he7fPuFO3dVjgKlclurbE5LYxwJdfwAFxK5XFNFfIVEGpiIqrqqaANmdS 6Z/a3tXW2zGpqGnerj9 mg2RQHb5LSuFFSbmFybaYyUC7E8JLRti0OZu5Sb27lnR4ygC4iGFYU3haC5RrLECqc 2qbF/jpnvLe1Llu427RsRmhQdGiQEPWGr5pMymRB9Qm8fHS5xKu5nIu0n6uayNS8W5WMIWtJ0cu3KEa9RGC9foa9KutjXMunqURJOeChdMiGA0mKuyuFrGlOs3SDCGCiFpVIQ5QAxduRY4e8yQu68/uNneitwQW9NlavRKq6gMu69apoS4qB3Mu1T4vAL6VbyOWS3Dq5DltUFZQAMljBQtS xqsByHtRHgxJx7hMD/W0mtpvaFakQsC/cWq1Vzu4tgmwywrDBKteDUio8Smfh8WzRTWIPCyDbNtEf5TB7Th2nCeVc6u04ahc5MSqSnwB7VZzRUq1futnctpnWUu42YmB/lf8skaoYWFZXAU8gb8JAVppvoVJQXPFw0ArvGaMwZobTAckjG2cT0NlWNgIhHPcb63mxPurulPburBnfi5Mx9lpqtGKs4eMszTbcJdlAWmJtg77sOkYvJd7xpUsapg8t5ZYnUOoxOdnwm2KwlKMZ65rfnu6pOc3ZMwarQYbs2blSom5laxpgCWaqGU8yWisi2NHT5MnWx7MmsNMzL6GuqOMwshKpMoMcxAnqhC3ysw6wKrKTZjFVtwKV76bw5XLzbtMyUGcAMOEmspLt/zUvJIUrz4mtXp8rD/6xHsMwBRqp3uKpLBruKUKXJ3FWZylUgxstvzcz7 LqLpswbw8/tAFPYCZbKYJfanAqqN02mf3KtF O9FGeqHsqX72nLudBZZl65Cd7IokHa7q280X/M2LGM6LOollKkUo5bzP 8dM3Lf9q7onK7V5Zqd0TJvxnNGo k0JRUXEdVldDMHou5lFZbkoLdAaHExNHb9ufInLdb8mps6jjMcnK8o5ZmZfjXzNrKe9eQEFq6pXRMMZYEWf54EPwISOTdKGtdYA3dZK3YVq3NSZrLR6iMR23W4Ovc4RXdOf/bo6atFWvKcNp03qBUcrNAPqMwIbJEMW8NhpPVRrbUtIndJvLc6TN5gUOb 4FcIj3NU5gLWfbdMR3c7/a6SV5sK2 a/Ltmzz/jdkHDRKqtMEMeAEl0M5MPACJBDbuoW FeS7E7TNJ922up3GUTWDudrGHAvHoHi/HKZiQhAE7izR90q1x421GQrY0AywwwVNWuQCR4A5S1AFVmAFV3AFWGAFWHAFCZ7gddIE2K1F350BDzDe5f3IB9BHlF3JMQhbTj1XRcW052xf841m9r3c1RunTyzK7uy6GIrK9HxfRjYDMdA61JIFNRMlV4DgURAFFD7kRD7kMSADI4Dhs7ThJrVH69tE3qy52bbGXCedYYzQu8VNLEuvPrDiec26JfvZxk3a7vfc2RngOG7gS0AFaZAlXQDhQt4EMmBCN4ADwYdFMJDdRM4E/kn sDeIQ8FbxkmtuQ7gy9RFiRVU4sBt4nhLwiimvxJ9wqnbv3tbZ0NwpLvp3xy2QTIQA00QBQj JF7gBQ0OSjNw529UXLFpXhqFAzLgBE1gBU4wAlQ2wRBUSyd9SIO lF5Q6NQ3jzLKhJdo4s5EXz/26JNO01ft0CtO36ZX2prOYTiu4AueBVjQBVYABU4QA6f RsnnpO7Vg6zEhBkwAjCA3SNQS390ix7OqG7djl5gSJfMxjI63rVtjAsdsoE9Z5C v8pO6cTq5XiGZscX3TpKA52 BG/CBW2CBWR06hkKmS4rnEsIARhEAjEAAyMwTzmE22zLpZXtgvHOwSRX/owQsEy i1tka1 o9GOCe9x/W72fzbeuZnq8WeY3UAROUCdswAVsgO1OQAMvxp4I2rUFqZVMuEvePQIawO7tDvJ8OfJIO1j2Toe9uvJF72sq7tAxD/ABzwP2nXslZvAclvM7nwVrwAY9XwVMQAM3wGr/zZuqfa02yaqdiNYTVO4ksPE8fEsqCsQdKfWdR/XkVV50dPX3u8T0LfCR7uKfHQQ0D2JmXvY3YARQYAVZkAZv0PNKwO1vz8LOjXw3AMhzf88D6U bnEe7RAIY7vGKCvW8Dm4BGuxY515H2Jox3dBdnro2ndcB/ j0/WFBBmQ3gPBN8CZdgAZnIOtFtqPq/sevOep 7sWwcElUM4oAGfACG29LiQT7gX 0cotPgkjWCGhcuCXu6LxmXN/7Xr 3 mtiEBd8NGAEmN81b9AFUWAEw59 zIyhHBR8AHHjBg6COCpgwGBhwsKFESJAgBABwcSJD0aM0GBAowCOBhIkiBFG5EiSJU2eRJlS5UqWLV2 hBlT5kyaNW3exJlTZ0kvDwwIABAUAEcBBAgUQAARwgSEGC5cwFCB4QQLFp4 zaFDh48ePoR8BfuVCBEhZMN 9ZFWiA tQnJktUHDSJMrbdrE6VKlCA0bO7T fRtY4AwZMmIcjgEDxgsZM2aQGEEwQwYLSiVARBChwOYCCR6Q/hDBYcAAAaQ9gtyZWvVq1q1dv4YdWzZJLxkHCB1a1OjmpEubQs2BYWpVq1i1qj2b3OzZtM252ghso4gTK13ixGljxYkNGzzY/r2QQ ANwjGcnHeyhMn69TFcLH5BAvKIyQ UQkjKucCBAxtEbFCAtI4 Cmk2Aw9EMEEFF2TwptoOIAA3jow6CqmIqPotuOGuuuo4r4I4awgRhRhiubCc84q7t26g4YnqrIvjCidm6IsHHv7SQTzHjDgPiiiqALIKKZYgcokjDjvyBSXjo88 /JTijL8DNAjBtgFRazBLLbfksksvWaotAQKACmrC3SyMwAKEgMNBuKWoqqpDHbr6/vCsse40ESwQ1/JKCOhyoMGJKLDoAg28mpDhhu50sDHHHHCYwbwqrLAiiyqowFQKKZRQIgkkjmAhVBaOQAIJJg57ocn7JupMAQEU2CCEBwQ8rcAvb8U1V113rak2BH4i00zelPoNAxwuUEiCheKUU4iuhNgTrCeeuDM5aPdUS8W4qvPiizG6cCJRG7pqNEfCmpg0CyswZZeKKTTVtNMjQA11XiSKXAIGEjZ4AAGkJvpIAQNgDcGA0WrlNWGFF2a4yy80 JWjMnU7SimmmsIgOIQYIq44reiE1k5q89QTLbC4s EGI7JI4ww5yLBCBuh62MqHHXq4QQYngMyiZ3a1/lgjaKGD3kILd9/1dF5SlxiSCRdG6Pcj/gx4QGBYNTCNwIa35rprr3XyFdiJdbMQIjWL1RBOCwh66riuog1rRBDzxPYrlGko4ok13JijjC6M4Gvc5nqQTtAreM5iiy32dqNxN96A3HE32KBci3c57TQJIp3G6IEEDvh84AOoFuEnhL9GPXXVVw9b4tzI7g2CszN2Km3iIG17qx5CBmtEO4cIq24/uZPrCTjswMOLKGiowQYhaiZcrih8viILLvZ Aw7Is4eje /n0P6NydcoeopOOV0CCRf29fyjgQVOQIRZT1 9fvvvz7V1oIgiu2wImgrOW9x0u2NdwEO8 0qJ/pIDvOQEwSs 4E4N8oYFOuhBDlgwQvPWUrO4TKcKWaBCz9Zgl xBTnvd294d4DAHOniPDnegwxu2QIVNdapULigBgKSmAIEZQAMZgN8DYIA/IhbRiAnyQgYQcAD EeVMCJhABBbSFB3YACERqUoF4vSXtOwJCF68FhDE MWvgGgIQUCjD7xTgxk4gQtscIMcvEAtcqllBzNgwo9CSAWgmTB7jXtDDEvIhj 00HtweJwdVOiGGWrqUyxIgQk8oICACWwACcjAA/jzABcc0ZOfBCXYIMbEJvavN1NESI50sLGqUIACVuGiD BmLWuNhYFq7IEEn8AFNMihDFhwQg1Q/kS8nYGwZ2wQHxu0d4c8zIGQyNRDH7oHPjhUEA51QKQy5YBIy5VKVCfQACXdd8lMfoSToURnOtWpEv01kUKxm8D/gIMBrQinla80YM0 tKcS4WksyvmnEGzkgxoYIQpqkIMco2AEGwxTZdMD4eJeODk/LDMPeGCDHpiphzesoQ Tc0NFu1dBP5CPDnlwg/nodYLQfG50o/GM5865TprWNJTt5B FCgARhlCRnqtcFgW0aMAcgCxaJRpZteJGIrTwYC0FjUIX8IAHYPLFOdFzkc 24AYUvkGF2aPDHGCYBzpwVaN50GhZXfjCObyBDVxQgxaQwAIVnCCHHFDASwdw/oAHtK TNgVsYO HUyfuJimoxJgOoCIVCwj1KkVVy1GJkNSAJjB4NnJWQavjSysATnBcyaVBq5cFoHkPho9TIRu2ugY2BA0OhZQcHeyAQjeclrVwYMMU5mrXEPDLkgOgml8FO1zieo2wFKtQb3yqFajY0wJDDY zZPmDsPizsg3sUw9ahAUzyPEJReDO4OKSVdJuFQ8tvAMe1vDCNbyrhlLAlBa0oKkpaOEOfVBkWf/IhjbAIQ1qoEISVFCCEohAAw4w2GgekEkF2Kq4D4Zw/iAGrJzqdDMQWS6HiAPdHEj3B19E4yxFJMZZnkU6UfBCQqsaXtBKBwpY6JkWkHne/mmelA1S8JQSUrACJCRhVKTqsRK2cIdo3kF83KwvF/5LhSOUAAQh AAHEjAacmbSwRHGcpYb5CtSVvhMO/0fxoKTowtokThY6UFXPjxGNoNYCG0GQhnNaIOCYuELcrgDFvbivGxJsDqkRWb38NDW19JBCfNawRs YAIVrCAFUvjAFJjs6CHjFg57gMMUTMABJLxBC4uTwgo AIISTHI0BDhABgx8ZS232tWxISyFzkSA/4X5p/TUUJw8VrM1txlEQYgzsPc0bDNq1whV4MI1v6vBbMmFUPJ1QwvB2lY/aCEJOOZAABYQgAAwAAVr8EADOPCBT1FBDdH AxIaYIIP/jTgCHCQ8RqooAQTmAAFJeBAggegAQP/9dX/BvhquOxOWRvWN6nEkeyQxSx99prE0YrWnfqJJ7y5qA1EptZnnxMoGCuOq ETq/ikcIQUfGABHWA3BzhQ7213295HEHIe8qCEBYj7A0noKPncdYR635XKDxBBBvwdcKIXnSYD97KFkzK7MWulOMwyYHPQ6Oa4lagIV8e6EYwwrSds/QmEOsMd7vCEITRUvBxPHBwPyUwZvssEDGDAEWgIySMwIAAd8AAH1j3yKZx0Ch2AewdU0FrFGU0JKjBBgTeQYKAL3eiPh7xLkF5YC/OmKon9S0KgXtQeRPxORSDC1bkOBdKT/h4Lp0f96b1gBjOc4QwZ5FOzn9CFN6r9e3Sgw7yV0G4TwKGkhz5CzY8whSM0wAMjF7IbkpCCDjTA Kwtmnx1i/gQgCBAA3hACEIw9Mh33/thmLyZCs4ZpTRXK JxrgHDw50Efl7rXD 9GtSABjScwQv3x3/ 808E4KXFO1jtgrT7uO55HD3QAhVotw5QAj/wAylgARPogAXgABaggjUIvg9gASXYlB0DgQ/wgA/YAk LLxo6ghMAgdBQsBAQAVb7vhYkuoEbE/GTNc5ICqeAAMC4gah4rLeIIBoIPa LgiA8PfrzpTIwwvs7AzRAPSiYlvPQurKjE /gihYJwMXh/irwMSTlowIUYAAP0II/YIPhk4IGgDsGUIGLa4AOSILDQ4EA 8AjKJq34oIZehckUAER I fgJURYEEX9ENXg0HKmzXOoJ0bxDWN2UHxoAG82TofwQI00L/7oz8sUIMoYMKuM4K9WETmQRnnWQspzKWvS5y9gYM4WKE88IM7OIIsYAHjUwMw1JTiQ4Ek4IAF AA1UIIuDJUGYIEP6DYWuIPWki j0RQfS7zSEYAE2AAS6MM/dMYIC0QZrBDe2Knl0hingAqCYJEiaETUg0T9w4JL5DrQkzgRGRHgYb9P9A4hqLNR5KptOq9A0i0UMIEjeIM/eAMS/IAjCMMP6AAQ/kACEOiAFECCccu2uNOexom TUmCI7g3EQgQWGHGZ6TIVgs/5DoK/kCKC4MAjamn5sqYx5CBrRsULHA9/AtHrksqBpq6EDuRtNAgdeQKCYKxoNEmFnohFepFD0ABJZA5N1ACFEA5GaOCFhi1D hCFfAAFvCAAOBFLeAUPgoh8zm0FbAr0fChE2jGiuRKm7rIGdwP/biwVVolXMMKHICBGGgCKzg9 6s/JRRHWwoxOHs4B3KOmOwBG/EO6ei420qoFyqy3as5FEBFNziCDtC2JIADPFCDJECBKPMAEPCAIwi3pVSCFeAxDcyUQ6OrE1i8rNzKrhTNdPpKCzsAztCM/oMry8DIgXOxgivogvxLya7Dk6 gS7pUI 8IgnT8iq4gnCKYHjW4rTuYgz2IIWl6AxXYNhCYAzfQAhRYgKBQgSw4g9ZTA1B5TLxrABSgl1HZMSSAr00BlbqaJB ayNFET68EEApDLt5AgGksAIeIAAwYCBw4ARU4jCWoAq7CgzI4AywYGQayltv0tRBrDnMcgk1cRCOoDjXYAmXqgz7oTzyIUD ggg9wgBaBAnpjAABggBrAEy8ogzlAgg8oORP4FBRAghQ4NMR7tHmjFxUAEL4iASZIzxtdp9oQmKSzkPecRoeAgMnAARJwghjQzy4wg/5MSSOoLJcMCwKFGxGp/oEplVIFpYEZKAIoyIIukL83qIM66IM5SNI NI6YAEHWAAaaAE07UIH6AARGQsjwAIqYMq8U4EIXAAG2LYG AAVAE GDBUUkB GgEbxdFDBSUdZc8ZpAjUHJYMGAEScAFBIRQz8AIsWKi9qIEyYrMo5T8ERdDQyzqty0Ssuzqtc4IX49I3uiYwxQMzmAMyrYM3aIEODQETyFMU3bYdKAtuhAKlTMN6bD4PILAoY4AOWIFr65RAxTfPKFREhdYjaqfxi0 H2AyJqIgNKIEWoA4suD8saAJNdR5g87X2GwtT5UaVHD0foRQrKL3SiwJKIZQqbIM5kDk/eNVY/YM /tgCXA2AGTCBbmPRAACAHbC6GWiBWuw2JMiCI5BMuaPTWsRATvExSAInZzXUaNVY 5k8aq1W90QABXCAEGiBJYgqLLCCKIiBGXgLOnE4EiORsVDXJyi91Es9LuiCnLVZ1LOeAMwCNXiDqcIDfC2DOwDTP9gCEFiABWiBFnC D0ABbtuBsagBN41OAAiAJegCLGgBDzgBJQgwkxvIJGhI7EQBALGIjN3YtUWdJFoiQawQ XRPBXiADTiB6SEUL4iBgcgKD3nZuVHXnsmC0 uZNECDnM1ZodkCLuACwXVcwd0C4eSbqZoDfMWDPPjSj2IBDnCApYRAuPNQCSoCDgiK/m0DAKZFsSo4AQZYNxQIN1IblUdiNLR9Vra1XeMaJbi9VvmciAOAlRjIgkm0Ahp4i9zRHR A2ZidFh Znsg9XKJRHMaVXuld3OmlXqE5g1PE18V0vaHdVzdggQ4NCm7Ttg9ogWkpAgfwUBQAAQZwACeYjtNbAl9cWgbwwBX4MRY4Ac90AKBT29sFYIXBKbCMHZnavi3tgoWSgcDAER2IG5ld3uCUv6EZmi1InMVhrcfZnslRrQfVYDhAq3vFAzkQWhb6Az8AyqZVWtxYgBA4gaZVXxawQLu7AdEzySpQghLogA IMhPA31BJgRMIAQ7w3wA2YgEOJ/akmH BiL7S/oAaxdkr2FtIqSIbAIwcoDO8SdcngKhRJB83GBr6E2PHeYM5EFo80IM0VuMv1YM9sIMTFrszNuM9ANM6UAIPcAAQYLSSawCC5TYPaAEuZIEkKAGC7YBM5FbrkIJwK4EVkEATEBUTEGIO4Lf/PeJL9hIvWM9SIgCPCFkH0IBQLgEmgE0reAEcyIC3qCKacZS4YMRpiQI rToZVw0cJz6O4M50GVdPmOhZcBf9oMIrQM7qAM4lrk5kAPL1YNiroPiY4BN64ASSAE JlgJREoO8ADxzQGtK4IWGLmSAwEVoEwOAIFRYQEUmGQNqF1MZucu8YIhDhCD0Qge4qEHcAAO/uiADSjUUoaBDLC1KroRR2FEQfkZxXlQxqUc11NoEu7lhh5aYGbAtLoDBtyDiqYDOfiDqdIDOOiD5PzHJOjQLjSBFHDdljPdpeU2LUZYLkQ5cV6CFRi3FRjPdF7ndrbpLWOpEMjnDsC7DYgVn8Y7r12CLa2CfnYSq2govWQRHknV JIvxaGcu7iO7okDOahqhnZoX/7lh4ZoVPzlOuCDk0LOpAUBKXiDPra7AJjAB xjgvVQleOATAyByFRfB2hkJdCC8PWAFAgVF2CpUB6BJbjpwWaQL2ABvyawxC6B/ZUPextkLrgCJiCBB4jPKLpBK15HvHECmtXAKTBoOMqe/qtOqNE LzswbWL Uoi2XIfGV9Xmg1mlgxPeAi40gfkCABNIAg8ICjLs0xQg3fWVgoWigejkttNVASKZAt uR1G5w1AmAcEm7Og EC84EhwqAXtTARdwAVJhgiXglJ5hAqhZigioAApgCh0w2DjlEcyBr60yITgoQjIoA 8p0wgV5gr1gz/Q74zO6qn6ZRWq3F GAyoAVu0EAD5S2t7zRaecZvHVNiNAzBZuAAD4gCVgXC3ANx8OFasMjc oAukGcdn4gvWw7sXObhe4Fyn4IJytghfw5wKYAGWZIhxgRKbmFCmoL/cWtBE2QiOkbzC17yBnwP0 YWDuZa9OxftC/uEZ4iNNM1aCZbc0lII/8EWsNT4dNt1bhTsOsDsUqAIvyAJ18wANP2yW6isS PAQV/PW IIj8GvtCwECOwEUcIH1IBIgiQEc6JeHkHE1UZn1XkPNtMLHqaYRNkU4cL2wEqsgZ/Q UOM8UKQ86APVDmaxy4OECtN5W0MpmC eq8WTW1ovZIOmPDkPkEAPALzTzWaUvm0pwIIlKIFnlunxFNS Cuw1x3XV8IITGAEAuedQ9ukQiFT5KAxUhgiHYIgKwAEjxRxOyXE3cBkzoL8VOqRh7mXTLlM2XuZZFZ83sINoUu086J6Emio0UIJP6TEqmIM0OLx2a sOcEDWncUj/thtVI/OlvPjeowBCOSAWSc5kpYVi4DuXCd4B9kABOPkTqak2LGYnsKBF2AaZ8fxB32DqjZCaUcD7sncOhBaQzqkj9eeoPFSMFVtPJimOTgDPDB3sk13aJ DNtg9PF25DkUBLTD38T1WUx/fbWMAOwS8EkCBHzsCFRgwtF3Bgkf6XkligjMA0LnW/6mM 1B2Gehusn32OtADPpAD1 txM9D4Ohbj ntvFPIeyHE9NqZ0P8BoP0D5qcqCKcgxNEDFQeOoJDCBPsba2zY3FqDwbNY2hT3deusANFVrUuGUoXcBFAj4DAjNpHd8k3DbRdUpf9kpqqAK/KjbEzgCsr3x/gpEA9w7ITngg9HP9mFOSPF5HNmK0LCaKgnt5aq DrXXbzJV7Y2GHPJ54xby6thmA3q7Wg9wtG07ApMb3wYgbmJVdRMAyMPva3DqK8Z//OhvCbftMvETywkwM4jgt6DffByXsTjoeMihgy8l/RNCfTfoA2kbKa1nptEmd/eP/WQO5kkvZj349hMmOQr0Hj2o9OMRHyYDCA8LAixYAIABCwYEGwRo2LABCAAdWEhBMmWKlCRHXLg4oSHBgwwxwpAsafIkypQqV7Js6fIlzJgyZ9KsafMmzpw6d/I86SUDggMChg4lYLQAUqQTJlTAAOHBhhIoWBxRQmULGzhx5uDB/kPnzRs4derAgePm7JuzZ UveP2Dh85fPjE6dKFS5YsVapIkVKFyx05efr4KWxHjx07ff68MdGhg4kkW gQ7oMYzuE8bpSgaGAQQAMTDTl8CACgIYAFHhigkKKFChWMSo6ocFGCA0iRPXfz7u37N/DgwocTN/kzKNGiRxEgjTABQoYMEDREVcEiyZSsmO c6Qon7Bs6dM6yYeMm7Pc3cdbLkbO zd0rVZowgQHjBQkSI0ScWNJeDmF 6NHHWHr8QccUH3i2QAdHUOHGYHroQceAi9GhBQsCHcQBQR6URpBpAXywgmtbbIGRFLOpoIIID Q2UnExyjgjjTXaeGNO/scdQIAARvlIQAEIQBABBEVm8ABUG4hw3RRawEFgWVvJkR5YaZV3HhxzxAGfGXZ1cYUVS8SA3wjRPQABAswdMIABGzAhR2F /OEHHX7YUYeEbKSgoGmnNaCCFudR1ocddd7xxx1aHOFBnwtwMFAHCqV2xB1ubKGFFilmxEIKJ2yggAEhwYgjqaWaeiqqqbbkhQZBGdXjj0EGWSQGG2jgAAdKOlieWGS9MZdZbKyxxpVVzuFel1820QQM kVXJLQRSDvtAQqMIAUffshxx4B1yImoHY1x4BkA5Z7GAQth9UEHZn s8YaFVIDwWbkMlGBQAB6ch lrVPSVBKckaGCA/gEJ6KYqwgkrvDDDOLGKHFGxIiUkdBpw4IADH6ggRRtxwJGVeHTsEUd5w54HVpbtodGFFU3EMAMOGVRQgQRLSXAzztNKC9ILV8g1R1l2yMkHHYfSoSAIjJpbbgAMHOEGYnb8UeEdUt R4GeOhnhEHyaaCNumKqBAAgcEGzxqw2mrvTbbpT4sVMQ TlwkVBxw8BgKSnCxHslh0WFHG2xwQezJc8xxxspXuCwDDjjMvBTkE Ccs84HaBBDF3D6scceesjJrh5wSOFBBx9weNrSAJiwxYB3hPXHunC8NcUKHeBb7gJKsLHFGv1SgQQLKphwQotmH9w28skrv7xObycX/muaQmrQAa4eJqFFx udLJ7XbLxh OErtxwD445XQAH66advswQ6S3uAm vlsTm3fexhRx6im6CgpE0zwMBAAsACqGmmL26wwx3okIc3TGgLSTDBZwLQASoIa3ewoQKnTGCCEoQAVAc4G/NCKMIRkjAMzosbAQwQPQQ8YHoOKB0LAsU3j53sDeXx3rHqwrImyGAE5pvZ dQnRAq0z30RSMC13AMn8RwGDnLaQgo6oKHTMKB0HmgAAxqwhcTAQQspAAES1iAyxjjRD3CgAgoG8qctuKE8l6KCEoSnwRAMzAAfPF4J86jHPaLqYQV4FaxSyBwWUod0H4ghGs7ThjaA/sVkVZJdHNCgOB7iwAJAnNkQh8i abXvACSowlzksIc87MEPfYDDH yQhA9MkQEf MBjGtCADqBAD2 olBI60LTWwKssQKsTHI4AghRQ4Q7v2t0WqHAEDW5wA2wiwAGQhDY UrOa1gyOHwHpIxUWoIVKIg0LprAFGw7LLlzgnXnKkrgqkK SQcyk iYQz/YVMQLtUwAMrhDKOPWBMHWgQu0aUK4/BWoNJ5LCFNZQFjhMAQWRqpcJtBCgPNzBjInawnfWYKnyTEGOSePAAAYATWles6QmPanDgPJHbRLsAAjQgAhEEIKJPIhYu OCXfKSBjTw9AxdYKcMYGZJeBI1/n2UK1IEHsCENsTFD3ioDGH4sALT9Smii7FMeij0BzdkqANLaxoL5vcxOOxhDlXilRulkAITJK0BCjiAAUb6gGmitK52vasJVcojHvWIYAWLigggowQ2ukGjwlokTnnahbxE4WU4uIAFhlpUotYMZ0VCwAaqEIf20MlzhdGDGxwjUNAggYGuY5db4FAnJZhgXKlLjQmksIY55EEObihLG8NiQSWsFQSRSkAC4hrNueK1uMYt6U8g8MceFcUAA4imCNj6gSPwjo3eK496cBrJK0SBCTK4AQ4wANnIWmCymZSc5G522RJk4T9mrJAppwACDjCgXB6QQmoRqMD8lWWq/o96bWo8EEN2haWNt21jMpOwVtMxILjCBQldjyvhCS vC9IpwPMIENIERIWtKqDgpd5lQzacYQ5dSByzRoCBFV gxS6OLPpgjD4gUiCIS6FZem9GJBe0YZRzoFM/ 2mHI5SAIeX6wBQoBAc95KFobLkDFUxwRQCbawHTZcMePqbRwp7ldykogQcupoBnupS4FD4zmttmYeXuNZChEkEJNCiFLXChzlwAS3nO8Aa7KC4GjYusiwPdYvLC JKPu2RldWzPJbhhc05UTD9tuYIim4sDSrilahcqHj wwDH0GgiAFyAFzRhUWIb18kcdMGbhsjDCaX41rE215pUqZwAK/tjACEyAgiPghQpraMPg0DCsYemlPiMgtKADbYHxRvaHQMSBDBiXaB1L4ApxIOWP/fBkSfOJaSigQp3YBYf5reuVo13ALMn12g6kFrfD0sIUeMtWD6gartBsdazzrW9SzVqbRlGACEhwAhZckAtsQOx53KCGLFBhCfjBQY0B7WIdUFzQFliKzHAQg2XBoAmKw0GObVaBLmy2yU8Vt2K fDqm3VdO6yI3HBwDwAkiQUGy7BPTTHDb73jPhpeSggbBrADgGqXMrt430pPem37XegEhiLMKrkcFLdT5SgnPQmMZZ8kKSPwCOaC4DnKQA6 Ht3EkiAHaPX4FEjTBCn5O/m OMdCGO5Syn3Ra6B6OYDp6nUbAa7BMAtk1BRaUoARIAC1vTfdfpj0tPYETFhfgvQINfkDVBLu3mZWu c33hOmvGkBodH0EKTCczlgxT1qyIKYZXOB85A3018Mudgzc4AYyiMFe2k4fj3e8CTOoQORwhoM7EOYPc7LDQlWrBd/q8qtWvt6SmWyHE1HhDRSlwxaUsIIwR/DSUSLZsM6pTBSg4DagYnXmOa/ 9c k33uFJgc0GPWpX8WmBtaCEhzbegose Jgl30O3MAMbFwVXEEbxIDb3V7LuJ3jyBMR3UwFyEApxQmdMBG70AELwNJofRUHtAYb3MFgsIvUsIuA/rzBFrSWpCxA9ZXFGwTOsHwNb6GAYwwd h0d 90gDpKE w2FrYWACaQAC1gFbHSPz0lBDJBAeCHbBfxfDthA2NkADWycFchHFbTB7fXQCDDBFXQBDEiHA97MBGRAE1CgYdhd6OjBFqAAadTXa4nIEQSKHiQQ8ZmRZQgNEjyKaTQAeqjTsPUObAQPCnyAAoAKNEFYDh4iIurghQGSAXAA1FkEbPQOpowTFyxBs/hQ/y2bDiwh2AmBE9pAEUQBFjjBCywBE2hhDIxAmUSHx5FABtwM kBgBlzBBMaJas1P6LAB9nVGZ1BZvhwBGxjfKXUW8r3BEaSgCezhG/DUsPUL/m18mQMEl1zZYCJW477tIAHcWpwxSSRqgddU4gv4UBIGGsXFXjnaQA7QgBNggZ/JwAvkExZsQHQcST4xDs3EogRkgAi0AQWeUlsIyBoMxhkdQQckDRuaS6MIGLgZCOgkym2YhqiZEQsy47vBhhIETwnU0TRaI0dynoUxx c9QAicwK4pwRTAxu6URxZIQTg2zor1X4uJndjVHk3W3gw4QRTADA7MQBNggQ/NYwwojgyUlzzdTAaQQBzwE1uURR7kIqHYkBZMlbnh3FcxABhRgWoNCBscwX/ly7ss1DIK2wu xhTQxgmEAJmRVEeuJdIxnQAYAExNhRKY5BBixRZI/oELbEB4JZvs3UAAzoARGMEM1KQRREER OVOjuIMyIwFLAslrU8 MkG2fNZ2iNsbaIGwQM0dbAESoMBHSUobVlEKJEGKqEAHGFkDHIFZoEdYDtsblSULlN/lDRc1sqVtGpdbtolUjB5dTt3XMIEIZIB4CVo5BmAAGsETOMFg0uQMJKdOzgAWMODMRBvMvBMFhKEVaI6APIkZrQEcsQB4DtbJaN/ XBHfpY6jkI5CfMYHgBtrtua7vUZFxCYJECJt3iZ pplbKsAHoIAKWIQSSMEFJdMSeMRLwmTszaQAOkHLfJcADmZPlo8RYEFjhdfjOGA84YDPFAZWWcYaSIEK/njGQpgAEmhBU67BMr3SB4AmlaUOQrhBH4DHGyCOWL4RHGlE TmAcKllfvbocX3kjgwFB4AACqwAEiRBb84ZFXiEcA4n7DXhDdiADdwADUyoE9ReDDgB UwhD8kADYwdBkTWUmRSBGZOKqnWKa2BCqwczuWLbBXNVqroFVEl07zWt5XFGXyMG DBGpyBH15QihwBChDPjqafjx5qXTHdAMSfdSDBXJ7kVWRBC4jABrDYk4odKBoBlAImFgimDDgmmBzhCHxdmIrpmKqPBGAADHRBHvwBmn7M9h1k6hDEt3ELG2jBAxkSiwLYB1zaAlVJG6HBMsIbpKYIwKCACBRq/m0iKrPm0azxIGSswBEgQV cJPZIQQjIo6XG5NdBYWFGQU02JztKoZbq5A1QnJPKWIY2wRcsUUXpgd4ZWYuKyBQYmBv8Tu14gHoCGANwDAvmD1goXEJxQWyAzabYhgJsZLMu7DU9qwCoxlRMa7VOXRscgQZkwF4 qQ5QKYNagRMElQBOaHI6gRMcpkya44tZkjyVV43JgBWUAR4ISAK5ASuxKJ3iDjGFjKUM3p6QjogyzQKgwMnAwRmwRRsIq1pRAV4gFIoADAvU53PxKMNOrR45rCtFLLUi1NRVwQmExGONXXHOJGBGAYM21gzMQChiwRMUAQ3YwA7sQA/swP8p/tvWEaUFyIDPPNWEsIES2A29EAQA0WkHJEEqgcetSsHkgYC5ZREtYSVYHIsitcEarAAHHEFe9EVfKIFGsEDX2pHUUi3oipDDDinW9sXUacESBKd4iR0nzuRhCuASHEEVdIFiIufaxm3c7oAP8IDc/t KvSTkSAAOMEEXwA7ynREr8Z2jfAAIbCDuoEC4ZAXysUH /E6n ed1OMm7cIUcfGUbjM4ClIAUECzmau4RsIALlM19hi77htCawY0H/CBVZO1JToFHZGzYPWEOFIFiigAScEEVLIEoqm3bvq0P MDb7gDvvq1MouvvQoAFiMQVHMopgRYSWCXuTJcUNO Q/q4oQrbnzqUFsaTFG7hqZtIBHrwBuLmOsMbBHsgLQXAAE gF5mbE eblW31u 7w2nTBAyDAXo0kEEos0y5BCWDs2MVk2O1AAJLsEb6Ax86ADEDBE9SAlPYAFu8uD2xxAptjDuCATUpxUMZBkHELGp3maXyAFKTFXU5V6dBLA0hBHJqH51ygCoOACSQUiQlLI63ByGSBCziArSnACZCev2TuERxBDIhADhsqDz8yw/jwchmArqVAItPvRYZAeLGuTNpADRzmCMRAfchAYRoBDZzyFWOxKucu3DLwXxqBE0CBFVgBFnRBxxQKYbiB3n1AuQxuVl5XEszXylkZCqTA/gqwABJAYrzVjqPE0LuwC9B8Txuk7wIogAAcQAjMsL/M5WwoMiN/0OVAsjg3jA8DsQA4QCUfAZJiLhKcQAaAbXHWXijOwAgAphHIAP86QdvWQBZrMQ/4wCrX3inD8gCfWBu0hwsj32KwFhoDAApogS2Bxd9sZQNM0WkURBY1wN3oawf8V9AGyhvswR3M0BJ8igGMWQJogAtUwTbP5fly7gN80APAwDjXdMKUswEIQPwVszpXq5iQwIr9HzreAAm0gGKGrBEUARSYsicfsD//syrbQAu0QCxbARrAbHd4hR80ZYfCQSB61aTAqFloxi1pAWmc57zmIQtgFGbMEBeM/sD5wVUCOID4riSSJkELSOsJcIBMv4BN/zWqrFlOb8APWjJp9oXDqRgGCDV4jcAJGLVyUqkps60VD4EQBMEWHzAWw20NEMETiOIZlIFodwUecMWBYEZh7IF8NTRCbIHd2ZAbsAUr3awvlgsIrPFCLdJ6IIEGhJQdPdetIcFKcvMRrEAMoIAG9DVgLze/SQdc8Yd19HRfMIF YIA5yl6VxsAJnIDHFkFztu0V 0AQYPY/A7QnF8ETQEEXmIFom0FPfQ8elMW6gMUpeabtAO1EaEFa5MkUeAhat hBSMFZJJ8ctMES8DWbABebNGLPwJH5skAM5GUCsJBfM7eF04iF/j1AARiACKTAEB/2TzfOde8vTu5FC8RAFFhBFJhyDQzBAfMAEADBDwB0D9AAeouiF7THGeTpHoKgfH/FGchBFiRvnZpLA6RAoNBBnMprAMhSQTx5AJnLB4wT1KDBGSyQFIjAgg/imgCXAojvNicyVbhACAAXBFT4hac5cWQ4AigACaRAdI/eEiS2iCdoDgSmDLjAEliBC1C1ExCBDVh2EPzAD8R4EAhBDdg4FGDBTgW5ViTfQh1GAslOHsTBosjra6lGCgRoIPYPg5ymLNkNFgEQugGjRPPUGbnA dkRXJ30IIrAEtzo a5AXofAD0MATau5rgdHhieAmxczVVSF/ikioYiHXQ IXVLPAAm4wBUwQQu4wAxY8WUXeowDQRAMAREgJxa0wXcMLaQHzVa3xRws3wf8bRuqRnmGiCOWn KCgOLqK nEHwUF7OEA8gactF/5FXCltAtghEYUN3iWwK0v664XPE1kuAI8gMAN8RHMuQsQu9g9oZQm 3bjXgsMpg30gBBUe4z/gBBkexTcWa 4gZ6BRRwE3t9YhrjBgRogQQOUu7kAEIAB7mgxwMZURDIjwfmuSAqQXxIYGOLgARocQQdlo18dwAcBV6gUsg0X9zELvJAQvMFP/UtkOFRsd8Q2PBK8gEtGfBNKaREkewuUANm2AA2I96B3vLWD/nwafMdYjEWX1FkbXDlXh853zIEbNFRFQ TLCwRqtGgHTMFWU8iEdDuCYabRnpgZlPRbsTpcJX2rA9y/JPIKuADntgoESD3Vb75KWH0IqABJBrspnkB4WffX9YCUSukTPMFgNmcUrC0PCAG1/0DsZzsUqIFupdOeRcGcj 8eloUfoAeGPAaDEFyYKS6mI2Qv645GBUtugeWwtOBVd4EIyPWEt7odBdcHZczkb4Tle0QCZD7nj39NWD1/nAAQUsUSPHzpU1zG6wDqT/xnp/fa1oCMG/qhe3YUpEFY EpYqi1APIECRUkWPHTm3IEDp85COnm0rDiiJY eNUpSfOiw/nEBAI8fPQbocITNQjdbjmxh4 bNmzV37Jzx0kWGggMHEBRIgOCAAZ8HEgRVsOHIlCRHWLBQwQLFhgQPXoSROpVqVatXsWbVupVrV69fwYYVO5ZsWbNn0aZVW7XLhgcaRJxAkWLpkSUvRjyYgCFHDh06etSwUaMGjSJGDBehUQNI4yBBhNAwEgULmoUL55xBgwbLkydOnDzJcgYPnjls tBxQ6fPHTcr39Cho1CLFBYfGnDg0BFkSAYgktTOaALJFjps1sB50 ZKjAwHCuQsML2ATwMHFChIoIADC6NIlTJ1C3VtefPn0adXv559e/dUu2R4O0IuXRZ2X4iAsPdC/l8bhgNbbLDBCBPCsSCGGKKIJ7BooyU33GjjDM3S8MxCKDY7Yw463rBDOTvsgJAN2eC4AybXqDjChA886ICBAHoLqQMTTPCggQVMmMIlluDoookReEJAOup6ui67I1FQQgmkVlhKBREegCCq96is0sorscxSy7PieyADEuay7wgmSNgAAwsw4CuHxHK4gQYbbOgBTh EMBCIxxQUzcE3Tsoii82wgMKIC7EoA40zFuojNji2kEKJJFhQQgoq1lgpD4XcoCKjDz7gIAAYYwyAgRsBAEEK5Bh1o7kMohMyOiJ7AurIBEpQksmlXIBSyi157dXXX4ENtqv4MhCBhBNS/kjhPiRiECGD/dDsawYabqj2hmltGEKIx4JwTMHJkuNTiymUoAyLQI0Y9Iko0DAUD X0gMMOKUxoAMZPRQUBCS3eMPEyLY5gsVNSAQAVJAaSKIkNKlBYgYlmH1BgyOmE5Mm6BIASIYlHWXDBhRZcyIs8YUku2eSTUTarrWJJICHZZV0I4dkJ0MTghiJkqJbaw2zYNogfGruTCCOgyOINONzQggolnDA3UChCg8IKNcpAFA/X4KDiAwYWMPijADhIsqSj /hjCxY8YNFFrz8ygdKS1vhggROuIFPmBxAwoFUhrbsOKKI49hhkkadM2fDDEU/c17Y0GOEFMJU9AokX/uSDNs0ZorAiBkFvNqLnn4MOgogFs0gODja0iMKzcwN1QlAGzYj9DDbYeKMPJVDYjW2QAmjABCXccG0lOgBe0QMbefNogSTcUO4NNlDwgIUsrqhiCRjyCsrVIn8KqoNIIXWBhRZYIFzx89FPX321utCg8Rfquy GEx6IEgILcMCAhBiWYCILJ2RghCJ8LmhCI1oWmvcGLlgBCus6lxWcwASoRaELZrDMg igBxO4KHkx tpvlMCGO hBDyehQhKix4AO8CYAKKBC7eBAPBoV5DYniAETYCACAwgpAdcJCsaA4gAVJCF8SQlZBjIAg/UtkYlNdGIY2vc ZNUlBiWo/h8E9oPElp3ABVJYwhMQ0zOgNeYHoltXGo72hiyozoHnUsIXi3YoRF0mUx0gWMHw5cGCSe9UdHCIG6SwAg7IzSMMONVKFpKEkRjFAwtoAAhc8DCnCOkmP8TYdlBAxI6xYAUuIAESY/BEUY6SlCSLIgleYAK6dDJkCMAiFjGAg8eJoAQnkKARatADIfhgjAkqAhTUkIZDpUF1A2FdFKJgvSqkQUMteUMd3jCFDTYgJL3TDde65kGRqOBUR PQFjjVkQV8oHZHg4MWcHOEI4DgeBxgAAdKYJcRyGcnl7SnCSTXsSOowJPyUWIpARpQgbqnfRs4gQpUmQJWAgmLEtgL/g6MAIMTlMBYMngTnYImhCK0AJhuUEMX0FDMLKjhnI5aFxW24IY5zAFpbrADG47QgA/AaAEcAMGKOsCBjXiKdx9ZgAeUsIbXQCicYFPC8/rlhiTUtEXS0wILdqPCJEjBBU4JigGyA8QPsOAoElnKJ0c2ULGOlaxkwYIGDIrQZK1gBU0RUgReiYEZ3JAJLjhBtcSY0RZMRpiH6oxAopAFNKohC4KiAhoX8gZE1WEKKGgAAwr2gSn8AQ9rSMIGB7lBULGNAS6cwxuo4IHd I5SazDtFFLggRWssAEsMFundMdNJoygez88wFaRcIQVKGUFYP1nWYEbXOFS5axpTShb/k/AKldKoAJp2kAITrCEKzhhBjfoGQ/0KhphnsEMWfAMZbrwJ0CJxpyKTSoLOuABj7gtD3jwgx7uANojiFanK9SmB44gVLQ9Mgku6dcajsAABqxIpyDgFAokV68BOI4ECSAAdrTTkw6kILdOWkFywzpcDW84oMU9aJiSQr/oSEACWMzADGDABClkoQkzyJYQsIsnjvYVDWkoLBSikIY0UCGYm7FCGlYKB83EkGE5BcACjuCGPMiGDna4Ax3WYBsQ5FQ3HZRRf0/Ign35lw7SHKSLVKuiFCQBCZz0gAIY/ICfZEfCKVDnbpeC4cJxmM51ZqKHVZAsZbGABBKDQIld/jkD0DzsCDGolrawK7Sm9dXGyAwsFgrrpzR0QZhBRoM5L2vfBkhhUUyejR 3kISM1PdFvQmACbTAEi2k1A1roMPZPjDmFXZgBY8iVwrwCQIRvAB7PFEAVq/KAXzqtkkskLOdkZ3s8 EZxCsYwU5eCQEcNKEJdS0BCUaAVx/woIyiU8LUAKU6ZJ7rMzgOrDBbMqHLqAA3MGIA8PyYh0spp3l6eEOjatSiG3mNASwIHtJoJ0IkHI8KU AUCEqAAh1lBDggYAITZPCAAkDgAdup AF8dx 2KusE pmzskEe8mDhOaFKCcEOo40DGcQgBh5jwl3jxIPH EB0K87CMV1X/oVzOUFdUKDCZoDevIVME1QsWIMe/HiZyzRZD32wgxJwo1Nqfu0Dpl3DFraQ2A2awA3RU8IU0LaCKRxPIhtoAgnwJu0MIEABFVdAA0qg8d0a2 Mit/vdeXVW6KpVWSoIAQEqBgEEeIkDHuBiFZzwph3InFtEoMKfzhWFBi5BC1hgoxFc1wU5PC/giqUDgUHVWSr8AQ6piaEf jDU5/2BDkowQeFnei8ObEGotDuaFlQ5BThwjSRsSEEJkPCBWoPAhhKHgAxkIB8evj3uut3zCUawK7xPn/ruwcJzD1pyFWyAABTDIg5G4D7s58wvPdi2EEb38zJY/rt kjwb13Vp/jwA/dJrsEONXPS1kSQnDx5ayQgVgk/kRQtQYCPspWA6AIFqB0WyQFKMgmsYoARWoASIQ5Xmi0zsBwdw4FkQQCgeSe6SAi kr/pIsATXQu9OQC7mwti4LyeE5AH2BwZIQAR27Qb8Qgd8IAeHYGi0gA3W73WgoNEo47sqg0/YYDPSQA1WY502gncGDHjuIA9Yosn8yA7WIDYAybE64F4 oHSu0A3GzgNAAMGo4DYErAF8J7f2aQOWYO0gIJY2UPB8zQGEj9iWAi8e4LdMcA/5MCz0Dn5SAAXiTAMALzooTgao7eH6BwduMAd9oAaI4AlWgjMaKP7eTw1WZzP4xLQg/kQNOkSaOgA3TM13ggMO4gVCTDF4ZIMNlECFaAoFrO41pOB4xvAI1EALMm0BHGkFIIX4YCDt8Cd/sMjXGOADVOBWOiYvQqkPmbEZtQIFkUWhjI0QvQ8GYeAF KcKmoAR/yIHB2NBSqILJM Y2E8gBKII3wANOHFH9IANbiOcQiVsQghC kUhOMSPpsAVAYABjuB5hOokkGBjlEAN86kEPKUDUICdyETw7kcDMWAYt4MOVaDMiq2fltEZMTIjry8uojEpDLL7DPEBRiAE0AqVYoAbcdAH/uOXSqKwBAIKvICNQsOB0OA1aO/SNnGEnkqmCMmDWotf9MAPFgI5 EQJ/tAQRjpA9ziveYKnD7QgBbjme6agDD1lARjAA5aABF4pGB9S8CLSGJFg4zrmky4yI82yDzcyBcNkAh0AJKMjA17gcTZA/DKgEVVSMqKgJLhgCjwDCv7KQqIgmM4gDtzAaFotFleCDaRAhV5PjwDAd4LKDUivJaRAIzqiha6QE nAD4TynJDABCYSpXCRYbrGAU7ACaItTboybzAu1pxPWSzyLGWTDzcSBU7guEqgLSnGS2Kg2h7mJDMAA/5CB3bABorACaxgbPzECsqxLwVLqJ7nT2gHDi4lXtII6nSqRfRIVD7gCChlCzTlnT6FA5QgDzjxdKZyCmqHDWhvNVhR/vjYIAlAgAOwEYvgKtpcJQHo0M3Y6g7JcjYBlARr8zbXqgQUACQrZgQ2YAOMRQbTZDgD4zgRiCXcYNI6I10GhYIqhXauTrFqTAskJaVMIkUwy46s7GsaoJ26xt1UQKVSTQ9QAsyOAIGsE422QAU4IAWkwHqWQAbsMwLuU0jaTgGuEgWQoMxw5T8DdEnvbiPtCjcPFEERQATcBy5IAAYe9C964AZkwAlGAzrboAuwAEPPEUJeYyVsdAqQoAA/AMGkYAvygD2VQAXSC3l2p5pComBMQApUg1/gQD558gOIg19UA0Jwr7WogAuqIPr DEiHcfAiRoWMFCmSNAPKkkkx/hXZnJRAFcpACQBBoaJlRsAks1QHbIBLvVQda8cNuqASv6sm3aAOXiMd1WBOG6lgHGmrUspDIqIE1Oax7rQ3OiBh4AA6cW QUuSxPCAFXugkjEMKUhQJuKAN/2wCHFUOn4JIlxU8KvVSM/VbN2xTQbNTo5RiMoDamiCZqmAGSrVNulS8ysm7YPJVKwVCKgUNpMCxdgdHsi6G/oAAWSRtDtAxA2AiAO4PzgAJNkIJ/tVFRkVfaiMJUAq9SuBhnsWhrrUDK2k/OSnPxtJSwTVkOez6QgAFUIBGVGAFQOAACMAnXhAJuOgIjsgCLqBm NmnAALFCsLvKAzDmNQsEAz/qwO6/AA99rtyGKk6o6j9FLP9axSI16EbRaABWjHXq/QBBagA6TgD1SAAVIAFx0JCVIADb1zCZZgG/dDAiKgxF5JSCDAABwABNwsKfjpcUBWZPE2uEh2LkygYVSWZX2iAA7gAUSg8HJKA/SiZmm2TWjAS2uHM6zg8rTLtNCgas/GTvHoUz6CAZCADf7gc//A/6QgtXRjbe6F1q5wJbQAoaCKOxV2WN9AC4qxNmaqH7sAgvJnAnR3AhhSDt82bt1MnepWSfO2eMWKZPPMZNlqZVvWAB7sATxGBVLwBXDAAqx3ca/FS1kCDVyyEgNrpFgiMZOgBFboU6zyKL/Gbe7A/g9Y8QiSYAq2QGnCkkbEUG6lIDkCrrG4pgHcDAS45mvXQAUCIAVQJwUWQAni4AysIPks4JUmwH6G8W3h6Rgp1QXs1luNN4NFaSPzbK1U1nl94nnr6hh3FAdoxnr7AwcEzQogBA20wFWlJglpDzkWJrXsJVc5hQOAdb3gV0XsqPCIg3ZqY0mkYFIolB63AAkgywN6uGtAQFLU6wOWZIO4oAt8hF3xpwKi7VEluPkq II1OIxJCQtCoAQ6WKE uHmvAypqSbqotQJQOAdU2AhYeAvOYI0 Y9FqzOrWQAuQYMq6pgNUYEk2RRRLRbdK7Ws4YF9Wo1idpyVWNYa0wF5M/iClliprTfZFipFFUCAOFugk0wQGZmADkYieXOkAhO0 KJUFwFiMXbmJyLgEXEDPOOkDnPdTW/YAnssFliAGGPWEa1aFY6CO09HGoEawNsPq2AC1bERUjC5eQFQFbiqQBzZGxkkJ7qAPUqPVVqN5VOLVPAXVpKlUOkUXy7d3UMCKm0AG8mfamsAKrKAJYgAvngVjZuQ 6JaVifeV Rl9sMBYZtmDbVkAPrUnCEABePkEnmsGLGACKgCOY2muWPgKgc7GCEvHZvgipiwAcCTVSsIUn p4NPdreuoxV0BhhO44RAhgJMdFqswE3kAJttADcNFTOLoEsGAb02Ta5vkF/pjAimerAxPgnrl1BVq5n5E6cf6ZBAIajQcalwkAeqc1LuU5A3a3ZlSuCVjC6uhPDbzaE6NMBWwEADxACuArOV4ja1jEYO5FmzhAC4r1aGaVUVRAFz8gt/wXAD6g4NQLydAJDWtqndtZA2kwunzkk3ioA04gn3jrqJP6sVFmqV1gLVfgqXE5AV6gCuwKlT5pd/ciopugdv4xCdVRmEzLJdZp3xpA4djADkqoKDsABPjtsbimNxYACezNCIMnPrcGBNhpDE/2y9DweAoQn1qgBVqMES8AB/ZnCbxotuQDb4Z6sXNLKSZ7nyE7u4VFsk1WBbwbBBaAoC8blajUSi/W/qHR5AIELTEptD3VETpxx3R7B5/45Whi1ANA5ae 246quYXoiCXurV6ACoXSRpVqRFJZYFTwi7CsoAhuwCGnrQqspykQ134SwAMQ7Fbsap70ULs93Fe4GzS/O7yhWpc3wCYSIInWLgLQe6djQCWG6jW EOteY9RW1HyFTQlSagrYDbL2MUfYc00Fdeo84gMo9EFQx3 leA2oQKzT5ggyYgWoQHZPTUc4gwb6IgeW24qloAVIcgMqBwIUAMPziS48aZ4 7sPVPEsk za9ewJJHKofIAQiRiTPrqF0l2ZxAAZKZ3aq9kHit1GmLGrzSHl hwXYiaZSYAveSzYsywRK/sBgPqAPUMd0ivWydPgEtKA2AmbCjuB 6WCFSCIdn6AGslzlqseLWO7snkXMjTGfvJvP0HzNaV1L2lzEWcAEGEAACJrXDWAEYiAEdCNUo SqaVYGqqAL/LycnCl2E9KmExmPQqIB7Gi9Rq8PYqg1FNOO7sUESE9eFKJYIaSxOBoEqOA4uvY3gkM3rBwNBqgH kKFmyAuPwY5wUrMQ0AiKHIsZ73W/b1Kbl0adZ3XW/ZTN8AFNACVNCAuz1sCrhcHlIALzqAN6vU1Vk0xPaBePmXAjlbaFVkKKNQhkA6deArJlC5RkA4VQRGelODVVosnQ4gNssAKLgrec2AEwu 5/jYAB3y5cghXyyjyq/r934mePST7WATeAcQblxc BFygCWCgCpjgWdb2hPEnVbtgQwOOPaXgBLbmkXCNRdzpTvkx1bJ5ITwktA7w3UwigRr5aJ7Mj/MtR3ARBTSCBVSisGiAB3hAJXMABnx5QZFoA 3nAeLuSOm2t5ylw4u 8cujzcEkzpQeqg8aG5dA6i0Wi3SXAlB4mK24C7aePckFhW5KCXAx7EUrm3hnRoLDj2ACkPIvADzAOJDmeWwDCagAwOFgDrZACXJd2JBgCqbgCGI71bIAMbZNJW2A2ugZieqn8A /zJRCBT4piRz/ s2jzd3c2DhAAAYAqg0gs3s5/j8op9g3nwLU2wk vw04lMmPIEmOQFLszw18n0ZKwAOiXZFRANSJh/jFCQUAAo6dN3DeSAHBoAEKJWvYsHnjJiIVEw08sKBC5QMHKm6qtKARxIePHjSsxHgxIgOOGRkeuISQ4cQRJEiOsFChImWGF2F6 vwJNKjQoUSLGj2KNKnSpUybOn0KNarUqVSrAsUigoSLEyhMqGCBgoOAsWMJGCDxQgQHDhtQPoAgYcIEChQs3DCCpUuXNw7ZbEniYQEHFVrcbFmj5Y7BFSBMgOjAIEAAAJQpB1igQgoVwB8oe5BS8OHEBQsmM0BCZwoVNqH9KHnsYYUHDlKyLFEBMiTJ/iYZRozAIcOKjJZvN6CYWdNmzgwZYFh9Dj269OnUq1u/jv0nVq1cvYLtQHbAgLEOHChwoKHKlRcZChSYS9cCDiNWuqDh61ALi9kAOCRh48YaAbpR0BZKoODBBx90sEBlDi5Q0QemsQBHhXS4wUJCWqRAmglTNPDBFAXxBUcf kn4mRQx4OYDDzwM4UQTJMQQAw44NDHcS8YdkURyYInAHE/ZDUlkkUYeiWSSUl2RlQsknJBCCjeBEEBZBFypwAgupMXEjCMgAJcE8YnwwhV6cdEFFWscYQIHDX4gRURsrPEGRGvQuYUUKHTQAYKTOVhZgwGgoEUeb6zxR0YMHPFH/oYeKLHCAiwoMYUWaJihBhpwuLEhpU7QQEMPQox0gxVWNIHFEiSIIMUIb0HA1go0HUHrj8zFoGSuuu7Ka6 IsWkViSgECULjFUpwJVXnuVCCW1pEAMJb0UgJgUViOCCXl1kwUUaE0E2WQMrSLEFRA658QYdcLChxWZdzdZAaYBS5h8bdJiLAohUvOEBAyEcMRubJiRhxhlnSEEpp1pI8VGoQghhwwxNTNzFFUwcIUVLEMAagqxL IhCSxng mvJJp McspRBfvCsFIaawKyyhIwwAknbKDABg/AIG0B1NJVwQhMaJtFFmocAUK8kglWAhKFnUtgQeiyMQWbJSxI/tq8hBEExx1TdMDBEW4oURoHHwiWQgMdsIAwF0eUUEIShiXxUQ0P 2DDDTHIIAMUplaxhMYQaPCvEh/XeoLIJKvMeOOOP74rkyO8AOXLLJiwAFnKCjACCRsMYMAG0T7gs1wUYICCFNpykcUUH3jQgGSTXcYBCEpQsUVEEVWIrh1UI4HC67D/CcACWnANBx0qVDSFGxLKXjwHDZiAdAMqpMAgB1pE8dEQD0N8ww0yiHDDDDI4YXEGFUwAwQZNK6EErTYl/sDIkN Pf/76V3VFby 8EKUVsAAsDNCcAcayARJ47gExYMKXwCQBCEwAB0woml4QAzClyU4ynhmYvQ5F/icLwUEPY2NBChwTGcqYgEB1gsMW3PSZKSyAAQxoEGWmJ4WD9IdNCaGCE4rgPR94rwZFMEKXZhA ibFnfQ/YwAmWAD/5vU1x 6uiFa IxTD0b3IvINYAjSWW8CRLASSY2MR6tjEwAYcLcmAdF/IEgg9EZml/ugwAAqAQhlRoj5uiQx/ QMKuxO6OuYOIG/QghQZBiAEAqEkHLLOAELmBChA6QgpAwIIoGIEI3gvCqIrwBCtU4QQymIGNbpASJobABVCMn/xOoIH6LS6LtKylLXsluRdsxYsDBA9ZxjIAAjyAixlAAAEKgABkCu0Ka jCGbQATRY0gANLM9sg77hB/gaAIE4VOhQb9DCQN jha6UJwAfu0Ad1sUEKPMrXHUEwkcgsEp5uOEIATsiBDizhCZz8XhBIQiMXhCB84WOO iqQAWwpAWHJeZtL7HfLiEp0othhEpkoh4IB0uoDv0zWeAigAJcU4JgIKGlzqsAFLXTBMFvQD wYYLY4gi1e2JQdhBZSGDrci0B5QGQH4sUB1PzBDvdKwtqmkITXJcGoHZBjB1SQhC24bgFv84AJNEmEIGjVkzUwghFaYDMSzKCINjpoBt6nhB7ZxKEwmSVF3wrXuDbFoifo4stoRaWOEsBKyipAAgyggRc0wUyHUYMa1mCgFHwAk2lFAQg8MJs5/kKveB9YgRLYYIeI0EEPdPhWB0ywBTrYoWt0kEJFjjAFhGmhTSWI1GeSYMkGlOAIn3XCE4C41YcVAQpPaAErxWoEJ5gSAxVA6AmQAD 1soCtEJWrc58LXe1sIANoOcFXlouEEmQOmJqbmVkMcIAToLQha/CWX3C3BeQWZg1UQIIJFPSBeJXTMpfpQAqm8BALjS0FKlBC1 pkBxLGrAEgSAJirWoTBqRACWebYRLa1AIsGKEGQfiBJ4dgA7xgAQpOsEL5YtAEU1YAAxbIwEIQBlv5hSABbY2ui1/8VixoQAMKPMFNsOuC7QpgPMnyrgF vAGUboENbWgpFbSgBLbR/iF3fqETG6iANKvCTl4ctMyjHrJZOPgBsSzswx26dgeySYYDC2ZBpdhEBSVwwDIlIPASolCEHgQBCEEYwhB2YIQnPAELWIjCDGBAoxvgAAOExoELqpDDFNtkAyyugFthDOlI7w8LG6CxAnGC3SM0gMe/9K5ZNlBBLrTBL1q4E8AglAI6NPlOaDiDtx6sIA9AZl7FY8Ea9LAGdXWtD324kx7 8IeCUAmSJgBNHtZwHxYIKgAMsK0RaDCECguhBjTYAUF32 cmOAEGvyE0BnBwBCokWn4s0MDGHC3pdKv7fljIgAY6Z10pIYdByNqxlZIVumy1NCIthaYJwPUB3M0J/rHQPMyc2ARfpVVmdijYQh742E079CEPm9UDEuLlgXxdxgP/wYMa2tQBDwDAA7ylgd20OgRQwbl8NJjBE7pgBSe8wEaFJgESxC2FFCNBBRoAE7rXDfSgm4zSCX3SXXmEkHpzeq8ECKzq2NuQlrKBBfEtzQe0MOQ7rUENWxgyX6R6uddBRl6VacAR rBHOtyBNezaQvLssIXLhRsJVfcAEvAghaZecgEteMKEffA9auPF7zOYQctPFQNTCtpGM9AMimkFPA74/NFCr7zli8Qk5oyAKyuQXxLy1dFfDsABhy4aYrC hSPPxoYdUIIW tIXN7BBDQ/hVPxU8Bjp2fCO/h9gwx300LU8oAtpJkDCFoAv9TtwCtYsYENYjmM2JxgBw4CHGA3yHAMrQAGJpowBDEqJg8WTAAaqefxMTOCAA0jg55dvv/uvk/neDKvztEpyGEMvAAWUQApc4IKa t0umpZCAMAAxSdwcwIgfiF7CbgGUkB1sUY8HDAFfpBOojUQDdYBSYB26QJObkBxSJZaTQUWfOcERDAqgFcDNgBKTkACV1AFiSdo5WNKOZA3N3ACTIAR5ocEIKAABQAB7Pd QSiE/CMyWYEC9McjAFNvv7QAIbAE/YcRh3F6ruMmxBMA9uV6A6d15WIuBKEF7vUBbVIZDJAEQ3UhbvAHblBO/gtgAro2WlhHcXbwB3lwBBxgLD FBZzUIlwFStxzAi1VBU4gPjaCAzlgiDegFUuQBeKWVjVBdz34g5Q3hJNIicDiboRDAkeXBEtQAgrQUZexAUjQfwW3BVlgZLQ1gJZxRx2wAqtxJ6yxKQPHGn3gB1ogG4FBGWToB3tkB35gTzjFBn/gR3DwGoQRNW/AiP0SYTUgEjzwTxkGBVhgBcYHTVcgjYRoiDpgg0gwBYuYQ0qQHB1gAD4IhJVojucoFEziEiGQiRrFI3riiQIQAANwR LSUi1VNKkHTVJgAqnoILIjLvgle4eBLnXiEHUyBe/1J9ozQm5AB4CEOUnwBj2F/nYulAJXGFoXwgZn4AbL8wFwVgM88AM/wAM9kAOFRx/EaCwx4AQyYCM5oAMxeQMuoASliHPxs1wcMAA aAGSiI4/SYlX4CpNlIkCxCNR5AGzM2aHhhiLaIqm AZTEBYNYBk1VEc25QEL9noL6BACgpAmgIsB4AHoQgd5cAd4sAYM4AFT8AZcMAVtMAdj0wEBkAQCURB3cAZo0Ft9Z3I2YIg54ATCFT7ZlwVHYDPh85eGiAMyMQWpd5M1cQIPMAAHIEtAaZnoKJQukUApYJRJAD vUU54dAJKkAVr0AaLeGTQtAZK0I9UCSF8okEbhEcg0IpDJifo4gZtoAQJMhls/tg1yfNlUzAoqYd7haIFKMAAHRBadhAHAyEFUBAFflcEeZMD5RMcEhaDTGAFUeAELSBoOXAB4ZkDhpYEjZmDjfg2CkAAlNlcl meQpiZD0Bj8naUCNOPvRk3i3gYqpEFWNcuSqACYKNNKBA8CxKbNqUQqJVfdcIpddgZAGB2Zal8F8ICAKAEboAENSQFdlCHDNB8LfVG/HgC0Thh1CkxE8OdijcDTiCNwjWe4HkB4RcDrueYDGUTIWAA61mZ78mj76eOITUsy8UjnumAcwmhosgF/JdzjbkGpogw8eMBKnBkUoA9YShHsxOaEGoCDMEX6MKaDcBIABAiaPcHd0AH/lpwNuxSAnfEAlpAJR1ABVMQQCswlx2QZzRgAzVoBBNTeOETfjjQAlAABUZwA38ZnsCxBJVSozi5Ap8jAOzpkz0qqZLWPw gAGREAl BHJSiBCVwGa34RhihBf1ZNBgBchchIAHSdQgScuACSdVEPYlGEVRJgCwwB39AECSEBGwYZiK3ihCCBG6wApMVAE8ABUUAk4YoMT90AyHwRFfQBILmVTOgA4Z4AYSmN1WAehgxBTgZoOMBqZMqrkFXqZeqQBk1E0QKZR0AApVCBdyCEfHan4BRGoKRBKkpbutEdU2lEaFZRwsANqSxe4RCcT31B2vAAgFwdm6gJwPIACsw/gVTsAITuwKshJ2JOQOCGj4kYARR0AVYUCOIWa3g W0ywARX0HXtEqewBRY6qaPtOa4xC2OV lclEKRDmkPdygJJ0C6qobJacFjtkjS7p01OcxhdtxkrIDzgMll3NC8NICKb8gd 4AdSICFrkE6bkneQ1AFHsJVbsARMkHiF Jc3EEozsAE30AItsARdEGIwaq3fNiO1kbI5iAQmdALxGK4yy7cvVqnGlBWaulQ5RLjxqhrxiq9K4KqB8llIgFiHsTBH4FgLwgFzRGuWoQJsMAcQQbV3IIB3IIzotAVz2QCxEwBkVp5gCwM2Ep7iCZgxNwKopBUmUYjiea04gBZL/lAFdZuDR7ACKFACCQCuO9q3xetcf0sA7iO4SUC43YiaiIu4VFqF82JOAreF7DS5U1Zl/xhwBKJTd AHHQkhiZE8dEA2drgfgsIBJqC7MoABF2ABrRujMtAEVgADgjYjIfa rVtzMcB/BBev7JQCwJsAV7K3xovAb/W3A6C8Qsq8UnC40CuqXdc6U5aLWboAmnFkWucQVKACCQICSUM8CxcnrEG1cMAHVQACq0gFZbkFJgAAKbAFdkAFKxCmARAC9msBFhAf4Vmy0igDNwADS2AFgya/NoIWOHgnRta7A7xiBky8CSzFt6SOxkRGNkYrRJpaEhyv 5kvjMRskBGw/myYslinda8Yd 81U2v4KFR7BukytSl8BCHQmx9wExACZcfxEEkZAKKDAzxMF3Xhw8BhKn/jvvHLv7jrv1IIwJuhAo6hADlKAAhwK1NsybaUmcZ0AE/iwAsVwVx8ZLs5Rx5gE1ESRx/gtY rmmcsIFmQZP9WEQNTGG7wxnMgB34gB4imHkuwZjV1BHcgTWb3B3MJLTJQARZQAYFMAYkMHHxDAoMGozuMAX miFvIOq1jSc4ivFdCyTB7yd sP5l8JSKAxUewUBAMyqkpBctjQ3aHEeDombizxF3HygKCWOJGE7fDGqr2BrZ8y3IQLTMCOCSgkwMQAvwHmtqDBCQg/gM1ssPKXBc7bAGFRogjBr/wW7JMsLtad82ubEIlwAEHEEyTHMXgbNL3cwU6Y0zJW87n/MmIW3B057AggDGpCU24Y8b13JVDFnt1QhAEEgdy8M8woHkwMDHcJjRiuwQxoJOE0gQwMAMkJsjLDL8SbdXedtUr4b9ZoIUpVTTA41ghPdIIUNInbdaMk9IPYEwCoAElIKTNC8qOqQJu8o8KIQWopwXumtMcPCdv9BBzsLmHogZcE9S3fAYsUQH1MwIgZkaeEwOcKAAcwAXCgcwXUAGtG79Wrdma/W2To7uZglhrEKpVcDnvlX6gQ9LefNarbTJpjQDk4dbvmLNxvRn9/rh7gUI9ajInRlZqZwwg9ax16MJHQc0Ha/DHxSUBEVABzYwDzDEjJ4DDVbC6P4gBhorIVR3Rml1cOLB5W50GaFCKiOV/SnBJJeABkTzWLcba630yV9Dcr51/IYCuLg3KWPdvtw0oC2AR 5KqjsnIou2VXNNC3aQHQi3UXJDMcRHIEyABDV5cMyIDGnAqODABlx1 eQqj4fnQ2R0fCJUVW11Ypifa7XUCJfAYCiDS3Kze7M3iuPTeZeFEKiDbL424SEBvxUN2/6jfF/Hb9HzGh7IFhtUQcuIQJcIHBl4FFAAfCx7I64MDjC2UyTy/N5Cnftm6EK3MyNw5L7AEWdek/qYXoo8MlubxVyqu2i2O5kbi3sXEdBpgAilQnxELym0iKIKhcICCR1u6168oe6 YBnciexGRLma6B3wQB0hgOli 4MstAzDAHnMRozRwAylorReg6MocNC/AjTtdNNzSUg/WGD VAGU ySue5qeu5jig1nsV2W XHAN05vBtLWzIFZJa/qtlb7tEF4Xi5vikH0wWoUdBy g4JdOF tnI8h8zCsh6YVqrYCM5RZQ4ZPDBHfdlYbVnylVNSUQAiHAAQqQAAdwAGYeqahu7tIhzgJAgCWAE6g12/K6iPkiKB6iAgZ6TfNSgDfHyJkCtG1QJ2vg635UB3AgB3EQB10w/gJyofBKrvBL7vAWzjcvqeHQjumVxo5HsARXwAWhvdOIoQQuIAIisAHfHu6S7INnfu4pDx1Y4CprLQD6jQJf8e7yuhlyZBkfoGpJ9hiLi falASmeCeGlVau AZE5Ud0UNhnwCQNz/RN3/BxwXg4cK0aThcLLxcVoAEJxOVXcB8GJ4trUDUlLgIaQOYHYPKmrvJpv/Itz3Sn6xULBsFbHK8HkjWUsQDG13X8GHLD47RWWIBRdSeAwQAfgASh8esEL9RtwBtx4fSNLxfUYtGEJtGOnwEb4NlVcEGrYSes8RcqYLMjD 5mf/Yor/al/xQsv pX8vIfECXmHLEajBFJ/rW9IyfPLaX3 TS92FSVNL0fPzVDUzBa6YJ2BR8HbfACD9DgjM/4js/gye/0yy8XcRE0uWsmXWBkuRMgd8JOni/yl/pXqH1MaG/643/6bM/qABvzKcCNcv/Otk12AcDjhhGA/7YWtl5llzFNY/wBEWGmw0j8VwAQJB5IIFiQ4IQJEhIWRHiwIcOECB9myEDCxZIrWbisYaNGyxY2IbdQQcIiRYkNGhQoSGBggAEDBBBAyBAjzE2cOXXu5NnT50 gQYUOJVrU6FGkSZUuZdrU6VOdV0Y8QECAgAABARqAUGGihRQqU8JSoSLliAkODBYAYNsBiRY2H91oSZIChIcO/g0WBODbt6/aAAyO0HFj5w6dPnDkxGlTRcSDCAYlF4wQmWDkiAkrH RMcwSJF0yqcNnIxg2bLalNrzG74qQGBysVwIQpk6ZNqLl17 bd2/dv4MGF47ySgapVrAIWdEBhQkUSsWPJlmXhQe/eBSqmbJH7Jm6SrnjT uULIACABSCovIFDx/0dxXG6LHkAobJlCfc3X9YvWfN gigaITQpMuqijdNM8w4kN9ZQwoUVTgjhAZYSSOAA2ggo4LbhOvTwQxBDFHHEpoqDoKrkBBjAgRJKOOEIJaYj66PUjgAhrQUYYIGKNbhgIw861tBiDQdN ACEDzg4ry/zAGiABfbg/tADPsUW6yKGBOy7Lz/98OuSP8u2DFAE0JaoYo02ssjCjQW3eMMN7rhDwgUXTtgAAQstxDAmDTkk8U9AAxV0UEKDsiIDCApIUUUFyCwBBSSiC0vSLaaoLoASpCBtDTjigCOuId/YIokbj xgr/IwlYKNOt6IEo485PgCCxgOQKBLXCPLlcsvI/CMhBjA4qgLLqgYkkgi3yhLigfrfAwCCBJAAEMMrdqwpkKz1XZbbrtl6tATF1XRARJIOOE5KabQQguy4sxiiiSQiDG1LTjizlgiT6MiCRQ 8JeDvdBjgdM 9PijDztglaOMKkiYKVeII44M2ggeGEEGJsyslw0i/jled2NkzTqCTjvrm nCAw6wdiZsvXX5ZZhjFtREBMQdQIEQRniUBbCmYzeLj7SYQiwa612Du486pleLsz7A6zwOlHADjj788EMPOKo0gwkRELhV4lwL2BLamR7IYAQYmqiiCpDe5Jjj1JA9WosHY3DhBRE0MPnElFW21k ZAxd8cMJLRLTmq1I0QIMQRHg0iemAJnrdGbcgzWh65a7XDTqYNuHpAExYr7CC6ch6DjmuzKAAscHGtYCZoI3Ws9CauOIKLtx0W27etZAiiRjsJiGlgcjum4CYrsWtcOabd975KzZ4IAGbCVBAAxFAAAGFGNcVOnKySLucyLh555hI/ks9YAAABpBw4zQ38nD1dDmuEIh1/VqPuHWvYX9gAxGEpgq360IXNncazRntaFNAwhGCNzzj1Md4KUOeARBgtuU9T4Mb5KC2sPAYA1TvgiFo3AZQQIXUyEiF4lMg78g3JDRIgQUf6AAAPjAFOCDQVVPDgxz4UIURIAB/EWAd67x2qyIaMQJCLMABEqABYJkJd1zowtHyFRK5JW2BSXBgDF6wARxE8EReu5BLrHIADHZQjWtkI4g IAQmicAyUEeAjbQOA54wAU9M5YKNSI F7owh0ro1wcWgATdfepVcmAkEzKgoSQm8WtMTGLKnkgC0fxxU7xjEwJ5N5IGBs8F/gIJo y8tqcBDAAraGxZG135Slg2BQsvGJ4DOKABDjiATxr63wY20AEPrEAKI5HRR9SkkRaar0FDolsht8CmrL2KDow0wwseAMlIZvMArLOkBgaUSTVt5H0cCST5yOk7LgbPi8aBAAZklwERiCAEG7jlLcn0AinEUp/75OdPvFCFJdTJRSfIG58KkAB7doADIDiCH7OwhSwY66HllBsW0XmE900taxudA rQcIJrWiubSTSAE/8HLNFcoYBVVANHzkc y WuhRd1IJ0Egih3QgAHMIgBE1ygghKoQAUniIGZutBPpCZVn2XgAkDpxIIWuEAECrDWARTAAXra8gMs/pDUQ39WtI99sl7eCclptoAGNLgqSuyZg2KyIIIEWEWurKvqBTVwthcUtQpZOFAbCuiqkKwGWTFlIcf2dQTEinJ4D8jpbZqwhCUw4QgsaOBFcHcGpWZWsx30whWc6gIWIBakyTPpAziQSwd8IFJUUJMWIorM1IT1pXFLkGmmhtYdqvUNdDiDHKqwgV1aMgEr R ZYJDSlXYBDW1oQ77exJEGDRaQVqQLC6w7MlriwGyNxUFknxraObkAuZslb3kJ54UmNIEJMKATnVQw1QFA0msPoK8DHAACyLGLLFmwgprKV9HABrisaCVwgaMkByScKkcNwOodXQQjKrAhmq4i/nAXOvlScwbSR2yAFwtQkILQugAHOHBnTjOAg6JGyAQoUMEKXOBAJojmqOalcY271QUmeHEEjnNcizSQMiHOt74O8IAJkIDCiO43DcksZ1nZg9YzqDWacHgDGuTAhQZmzExcaIMc/vAHP/BhMVOuMlrTwCYMIysLmltDGkTFwBTEGaonCGMFLACBCXimqC4oQQi0B4IWlQA0eb2CjQ19aEFhYQTSg4lsHqABDVzIiBCg70psyZwjpMuYWVDDMZnsQja4ag241W3W4mBl bShPXSIQxwYuRhPbVTWZUbD 8pKUWSxSwlHSAGLWTDUqVQAA8N25wiKGoO8PcC DZBN/gLMRoIlIFra0/6QFR6jgBSlUgFmS4ARK72S03oABCk4AnRi61r/KvDTbUYDR9BwhjPg1tRrYKSr9bCHO4T51a3uqOk2SusCoyEN5vvkFCarAhSw ASLRlQOiO1OGETWTrFRACpT6ewMMIHaG d4b6wgPeoJAAAqworZqMI6kyHgelgNgQlADDl6HfOh9YIovVLzUDWoYeBppcMcoszWOLDh1XK4A ruMHQxz8Hf/35DvAvc3I6JBKZl4TUKTnB1EowAURCwwAUeToIoBFQEGUCZS1IpAAKwMoMdZ3vbkfLx42Dl7AJAo8k2NMb/YdVxLIbRdm5u879DVOZbyPmo/t8wBzzgQdZzeEPiO9rWoS8mVu5Z r jvFzziSS2U9i1SaxeLq1ryQIPx4ETqsBnkKfM7Hy6YCvd/nrYAwVcB8BK4tDOS0RtKHYnLq6LWhwpok2UfDIfPO/ekG8/UHl cPADHuiQeOZbDQ xllLBZD1rUAd4JEpo4K HeoIZaJ0hFhA2BnIgg7CjRAPTok0q aT22Mdf/jqxwlRQlDjk4d6dsRt2BjCAAwAKqhdLAgKUAinQosHKHOPjGM6pg09ZA41KDDi4A6zRgyh7Pui7Pg2sspfSPLL4nSNoARHsihG4gRnAAdmJCPOjASOIghgYHg7IkiZSvdqwDdebPxx0/rv6S5SrkCuRursTwSliCyMcIIGhsi4WWIFyU5d1c6E5eBs0Y5NXcRU7wBo4SDws1MANlMI3MSt2kQIkaKAQbAGhooEbyIEbQEGK8RUMiAEneAInuIGxo68ZpEHWA5wczMOOq7/j8MEfnIkSezhiQ8MQmAERhCrESgIlAIsh8aSoCywqexspo0A9MB076IM cEAMdL72OIysaZX5YY8uBCzKgZdQEsEZoAEzzAE0bCxoqQkncAIjmIEN2LpEgQkK8kH400Ne3Lj6y4Cq8EORYhmCGD1BZMUcoIEZMMQWQKxEVAKxsDmXCrDdgS72oIM7SJj20ANM3KgMpLys0QPd/mKP9yHFoSmLJUgCESwCZbwBGsgBHdABh8sps4EBgIIBgvI/LaENmIgvudrFXgzIQ7OCUhJGkUpBPBPEYdOBHUBDVZyBF3NGJFBEoqEXAastJ3uVjbqDTPRGxcuapRPHjEqDNmgbOOE8A5SCJWiBImBHM7wBG4jHHohHd8IrgGICFMgbDGiICOBHM/rHNBJIoayxX4QAg8QfhEzIh4tHh9uBGrCBG6ATdTqCiVzE6FANatRILWwPbVy1j8zGpUMWLlCTKoAL1PgdyJJFl7SBhryBHdCBHphJGxg2TKoCKXABFECJdsIzCSgAn/THMwrKoRzMzSrKo/Qa2UnMYYOA/nhkSh2wARuARxJgRjd0giVQAsxMyRnZCOfaSo/8yK18g1EjDbK0ArvsmSqAglg0giK4gRqoAXiETHmMTPObATeUuMYZu528D79sP8BMO8EkTOFEKsMURrFBzDyDluTEAB1YyNmERx24AXekgSIwAiOIxSe4TMy0ymLynv9CKzZIqwmjsugin7HMgrXhr7VZzyqIgtUsgqfUgRrogR3ogRp4S9q8gRZ0ghiQkLuiiGFLTiLix1TSxeAcTgSNJYJEFOM8zsqoAGgZPWghNpqEx4XMgR6ATFWszut8gieAgiiIgkVUoe5cl5wjPDXAIiwSEi0Qn2NaG9OsghhtAlmU/gFVjEmGHIIdqM8hiMcaMMFYZIIXKIHHQIAMELYJsIAkPZHe7Ec/BMgEjVJXWlCj9MEiWiJfybMJILZ2olAM8Lov1QEeiMsMrQHq5FAPhQI1XYIQJVE/ci3vLBqkER/xkdEYbU/ lIEZOEPo3AEb8IEdzVA/ZUEmaAJaSjavIb8KmIBF3b89cVIDvUEpnVQOIkgItdIrrQzl3FKF7NR4DNQypQEiQFMPLdUocFNUlaiPiS16IQ1iWU/3zNMThM7G5IEh4IH6hMwaGFUnMNRkO7kImAAKoAAl3VIKeVSDPAA8pFRmfZ76c6cCwFTY2Yxg5dT/U8gudU4e8AEfEIIh/thVIhhV6 zQD03V/UqyY8odmCI 9IQsIT2BchmxHLiAxoxHWxXTIRgCGzCCJzACGBieEFiJmbgVYbWAYoUA2UBWP2SZtWtWhyUcKm1Q/YCACqjWLUUIhTRGmdzWIAACj/1Yjw0CIRjZIQjXIihVlPVQLABRLMCCKMACK4iC9KJR1lRFPq1XHaBXnM2BQX3IJ4iCfpVOVlzME6kM1uHUdtI91ikpSP2bCmjYh43amClOTL0P5cSzJN1JDLAACYhQYruA2OTWIPgBkP3YkT3bcE1btX2CIhDXlmRHl1RFuYVJ2ZTHetXZxoRKdxzXcX3HHTjD5txJLbmP0UOIO4OW/qU1u9/ckKeVWscNHKq1UqvFWoSwM64jG18xRrB9zB7o1rEF2SAQ2bP1VpLNV9PNVyFI29OFTNaFTDKdSbuNR7yNRxt4W361zrhlSLakyUTRnwgYPQm9MyZS3MWlWKh9XOTNFj6s0qrVVMpFCPtg0g0JVmOExxywgbMdW7IdXe7lXtENXdEVAvANAm4tX/PNUHlkxfRFRlY8Wb5t29ZlSOh0OCJqnQ3J2hLrXb9MpQKdK NNXgDmlt/qQ0xFTILAs/yhpM0wXK9jRcgc2dDt3tQlgu4FApH92I614I79AR7o4A4uXyFgXfZFQ ncUCPAgn4lAjNly1ytz7yF1q 5/l k3b l5d/ibdwAzmFC a0T8cMiQswUjCQi8pXordxhA9vrfeAhQFu1JYIlHl3w9Vjx1WAg4GDz5dYQhkxWdEcZkAEjqEw4ZM3qvE npM8xjUcfaEzpvLP8mVB3Otwa7l//xWEdruM/qYLDEcZtah2y0d8h8hVNrdzRuwAkVuIlLtkmTmTupeDUHVkeCILWhUzp5OIvntn0sgK1pAE/fcq4FAL69AEewNn0XUOjZcPkRNz9lWOnPV47bmXhqAIUjNaj/GEkytQvYVSDJWTzwwF4fErsZeK0PdknSGQnnmAKztdlbEkjsGRmboIY6GIZQEaYrIEhiEtA3YEORuN6/nWnLmEdrjtcU0plwMQKxmVlVz5nj4tlg/zBbNoVQbYzQr4AXr4A2OwBb/WBIGjikyVmYh5mvjUCaA7oZRRaNLTe663mDg4CbM7mbW3MxazfIS6AJU1M xAiG0YOAShndN5o4fg4HsQ/Hx4p3xUbhRBWCrCzrssBHKDXmLRnTzZmfo5pIniCIVhGm8aBE5TXlY7n2E3fJcZmbl3otwRUh Zm/GEiCOhaijZaxcVoZaVjjo7q3dhBWa69kB6pISai/GBUw81lVkRiuBxdYibZkaVgkWVkRE5jJP7Slc7lC g6nbUBnY3LW90BRxbqHUhjuAzc3n0YsUlBItaSVJar/lWiWCeQasTWDarG6KsW4lKujAmoDApAiLfmabutT2AOV 4N2Qy2YCAYXR740nlF4ngmZLgmZCFYyG0VgtUWArzeUYaUXR2YAKS8D/5b6gJQ5cKugCZIbN92isWmI2l1bKPlOhyAbMOlALAl5OsVU28l5iUW2Qzu7OmGYB/QWeYu7QtQbp7OgdFjSNbWgW51bVDGa9hlRdrmzd5tJ h13mi16jnu7d e76Tgw/eGb3ZOIiwVIgmws8iWCLem187Na0SG6XCN4OnGYCn XruNZ7e2AGL1ajAVbyGwV1De1h3NZj99S4dLFN4kIkC8Wk1NgLPz4QjgbfpOcaOwb4y /r38tmUhothFxYwKgGedBVQeeG4KVtuSJV/pDt2Q5WwLXmJ4zO5cNliU7rqVZs5tvXAP7mChhkvYbs6sPiLYuVzlXKIe7kHCZlz5VnEwl72pqGr8xqZ2ru3IDtZF1WXxBtTwNeYnHgJQDl8h92yPHYIgKHJ5rmxFRXILUOkvzWvW3lZcxfAoD2V5vIDetdpJy/I82xBZ9kFyptgvD3NL3wkWtz1reXEhLiItYdQK8Lp4FN/xZuIl7oFTz/GSFQIqDvKQ/YHRNm2DRfK3DvWhpXBA7dZCx3Fc3dG3fEtozeq ngmECJOeFEasmAkUv3RmzwkWT5HGHikmBWSs7Trm/nTp7g3XarYBfaVrzQbysgXZnHVw0 Zz5hSCNM5xdN B0P1gXCVq8f7U5oxe/UkirktzpkZ2AUCAGq/0Zr90qXgARSlzTv9hJuUSiYjnHMjXAx9yzQ5hat7RCZ7icC/bxiz30ia/Ni908l3tHQ1qu35L8WZOmsQAQDZaJiL2YB3cA DfFjdSC/D3fw9zqQBG23PxuRJpJprcdvLg8X7zidfVGtCBJx7Zz654kIVNjD/tJJ3NNObWD8ZxUNYBdI9tmZRdRTeiIPPmCuhvLkHcGrQ9io35mW92 7F5aG/QH66Mna8MjSX07xVrJ85QqITHoj9bVy9bIYDNcZ9Xt1bu/tkcdVDWdXcPebiE3cac12G3dyXFgK7V1CbiEzoae5kv xS/ghm41LTfdKyGaE0Fa6gfX7n3Abq3e3TfbKT/7KEX7e3uOggn5PRF4w8e9GsmfYZEfKbscNjpH4O33K7lfclPDn5fdsun YLc/Jx37L OUGTceHweX5HNV1zV4oUHZQg2 tTf Zc7r 37E8F6ncXeb0W5aFNFMTkffxJCL W5eBPdkbVuOI3fpsH6eG25U3dUp7O8DF9fvB15NLndoDYsUOIkCAFgSBMiPDHjyA5LkC8MAGiBQoQJ1i4oAODjo46eHTc4XEkyY0QChRAAGElgpQoC0BAEGElSgIE/gzYFKBTAAIJFZiECSp0KNGiRo8iTap0KdOmTp9CjSp1KtWqVq9izUrUyogMCHLaDGvzJcoIKldOSKsWAwaNIXf08BFkLl2CQmz0sFFDiI4eBA0GUbjQB2EeOTrmsDCxokWJFjpyLEkyskcMENieTBnzZcuULSOAllnAAM6dOnv 1Kp6NevWrl/Dji179tArOLzmFBDWwIEDL0OvhDABbVoLbCnzgCuX7lwhQ4T00CGkRo8dz/8G QEk8A/C3g0/vJBRPIWMFsZfoCwZ8ka2Oi6znQC8M9nNCO63PECagGmePp3QFqCAAxJYoIEHXnVFV1/ttFtvMoV2lgTBrXWc/ls9VMcDYXT54Bx0edXQl13YFaShd4TpkEN45pV3XmMQqTdSZO4d1x5moHlGH2cw4VeAWP0V4FMTCBJZpJFHIpkkU1w9wKBOYRXQWwGgARcccfC515ENHcXVoUGEPWeDmFsOYUOHBJ3pg4neRaeieBfgcJ6cGKGng1sbQXacnntalplnZKGEX0st/WgaakMqmaiiizLaaFVM mhaWPqVNd9ZVmLZVopcCtEhhmcSVIOYPewFaoeFndjDYW5mlAOdFdHZVkSy8lmrZX36 adLOZK1H3 mBVkBoo4SW6yxxxrJpJNP3hRlpWbdN9MEMEEw056b6oDXQD3w4JcPPQxR/qZee9nwHA d8qChECBt6mZbODhmQQXlYTBBBRdxlB6fGE0Qn3DBzcQjSifRRxMBNeEU1gAB6DSlsMhCHLHEE2cF6a/M3mRAWWTdBzBowrFlHGWHjQrXXXqJWcNed3V6KmF8YXtBDjeo FAFc2Y0gQT9ysenyBgY9/Nlaa0Uga6BvkTTSzcNkBvDAjg8LMVTU1011RZLahNpgNandHBsVVCjR3j1NaaoKW85qnQ dNQhYnammAMOODz0aosRYGRZvxiEDXS/ivUrnGKY5nofATqS5VvGF 8UtdWPQx55o1g3uNvBnNGnkmbE3ZulllziNWbKZW/pw5YdweymzOHZ/iznnHRWMEEOfIcM30r1CjfccEWflJnhufbq4379QR3Bw5Ijn7zyA1KO8VhcB6pSx3inpWdE7dZsg4pjZiumdKf3hVhED2Hw0HniuW68eBi5uvdwuGOE1koWVFstTBjoivhL i1OvOPLAzCAAsRK83QjFugNLCZnwZvggBYRmSEme9vTXvdSBB0uRRAiqmtdnFpEAQkYpzgXENxwzjM/ ewOAhboWO/w1xn99comTfOf8aQ2wBviMIdFsQIOTsI4sVwOc4N64ZRQeB5ZaeQw2NJLDrjnPemEKFupgxv5ZHaB8uDAXucBIeBuVhz6QSAHJ nXxz6Wmc2s5HAtgUAQ/gHlq9wAq4Y6nCMdb8hDH2btgEnbDNeqJa29cYR1qxJVEykYxRzATDoR7AiMyoe 9cmJizuTVwT8FTbQpGUm9SOc0shyuedF6Y3EK97x6mjKU0LujpGqnB4vd58dDayIw9FXitKjxJlNUEVRpGC2PBKiQEYki/fKonmKk5YKVABv8MPATBQDGstQS5OxhAnSlhZE/SSMeAAgpQ1R6c1vHssKGWgS4wwIRFC65JU8otAIaeWmuDWxZjRL0el4qaK2CLJe5avXRRajTPnIq1oYaWb9Vhgc6f1Jcyn5JGeweRM4muYAEHhAN8Fp0YsqSVnEOycQEWgl49GvkeFpF81m/jYDLSkxRBoUD6tUZK9 JkY4roqACSspn39Rz0rUignBXuk7xPlmNAkLyyglSlGMIjWpR9LoRjnqozZujHexQyKM3CKzkt7gBvS008wgkiK2mG88EmiLPiUCsmbe1DLKnBI0hQOTCVFLM9UUolAfCsSiTrSiSt0rX2GjoCaN8pw qolNMrdTCCTzgbQ8zOpURLMLPDZu JQIRObVz/SkJQcVIGEl6Wc8ZsLnfr2bFkuoRQA ihzryTAAQ52zqIm4Kh9nS1tW/PXZbHygAdEXP0yOTt8BpKrN DIDeClIiquNCPwaowFInARFV4AbxApAM sNS17PXO0RoMmTNQI/ihCIc0mreXoKA0Q2yXUNr3qtcpfDxBYwTLUkzShSb9uBqMN2vIw5UNuBVglsxY1V3axm0jPLpDMemFSPjuLib1gMhzqEuyM3/XkU6X0WtMAYJsHiK1e1 vhDxelCyN4gHvfqzXX1mSwNUHjSfjWr/RAUIP4ZJ0GabxSjIiHpiPE8UzSI9OPTasAg1Nh7zKDgTVGuJo6auMBvnJXDG/TAAqQLYirbGWhiJjEozQnihkKSvvERG8W0tc93bVB1p3PVZ2bpe4QbJzbXaCImaFfXM SEgwcLCanHWJqKYyS3oxXhgPoT4YFIOUHVOHKiq5ylkvcn3MOdXFjEdSg8Ge7/t86EgN0A2t IYIDfc6ukmrtl0rejADLqCQDRS6yZr7iNTYa7rSFdXKOMkaaW4tlALoOwNMKfWgpLDrY6 1CCTiggP4EYAC3NoCuW7sfZ2stAaxFQGtVclpVQ6CHfPu03NiCg HuU9MzWEkGVF2Act9H1almIwQy4KN2H 4BBHP34dhYAHJ29wAKwEmTb5KA1BLgAeNk7eJwwmxd75rXT9OJlDmQaGFDfLZdcEEIjH1wfSsg4xrfOMc7nvEHaEABGtiABh6wgR5 u7hzm1txMTCD2 Dg5RmY2zhPPs6ZP8Dk43xAV6a8gQeI/OcC34DISw7ykk9ZAwfgANAVYOwD/jhAAfqW8gZEQHQF3ASbpMEmAxbgda8rXAEO0IAIuhDxs /1C1lYwhKYcIIRhCAEIijBCVCAAhW4IO96P8IRmMAEtgM 8FJYghSqMPgqrL0KVlj84pvA ChcwQqKv0IVllCFyF/ ClJQwuULT/kqXL7ylq886A8veiUE3u9/dwETjqB3F9S9BHPfwAZKQIIR0H7kudc9yTnAAQc4oAEMYAAHao93JJQB7cpH6he4APoluP4FKlgB9anPghbwHQlICDzblVB40FeBClnIQhe6wAXytwEL5S /F7yw/i6gAf5omP8Z0LCG nehDW0o/xriv//3mx8XmF8WCGAWXAEB/h5gFlDBAhoe4CFBEiAB37me3ZkA3YlACJRACYCAB2ygB/QeB3RACPreCPpeB4DACbjAESyB2S1fC15UFzSg9h0BC1TfCrDADbKABOrgA3afFPjgAo6fFmgBAZ6fAHJB/L0fGnBB/6GBGrQBGrDBGqwBF6jBGqhBFUZhGxRhG4wfF5yfAo7fAjKgD5KhEkCgDOKgCqTACZgACHzAB7ihB8jhHHYABzTAHQYf8JFgB3gAHJrA8V2BCwqiRXUBGS5BBNJgDaqAGqaA3d2dCuBgDh6B9iGBElii9/3gFEwBEIJhEIqfEC7gFmiBGJIiKf4gFfigJkrBFGzeJUKgGVIi/t/d4AqkQAqYwC224Rt6gB02AC/e4S923fAJ3x3yIR/6YS2mAAtIwRcMYjN6kxewoiWeISVG4BGoAArgYjbeYi1CYg7mYBIkgRliIhmuYimaIymyoiquIiZaYiuyIwSCYwTKo/bhIDKmQAm84QfI4Qfw4vB13dcB5AIQnzGCgAm8YTamwApUATM6Y0OaktpNIzhKZASigBvmozaagD0i4zdqHzh6Xzv oBRQASuKZCqSJDmKYzgqwQPC4kTq4EvOIDJi4y3qowd0ADAygPAF5AIoHK8NZD4e5BuCQAkgAQs65FHWUResJAROIiWugEHOYT4WJC6igD3e4BGcoUS6/mNIjuQpimQpkuPm WA7XqI0UqMM6iAL1OJMGqQ 3uQd iPY9eRcCiQfRuUtogALVIEXIGVf1pEXSIFETuQKbKAx9uFBZiMFVuX0SaBHtqImbiJkkuIoluJJjuVHlqVZnqUE1uNMVqQu1iFcDp9czmVPMoBdXiQKJIFR mVr5pDaueNKsoAJ2GQf7qNUUqUJVGUtSqJEtqNkjiQVCKEQimJlhiVKYqYZTiNaziALMCI2okA 2mQ/xiVPKhwAzOVpHmZBHgEWuOZ30pEXoOJYHkEKFGYIzuF2JuZu2qAksuQ4buICEucWFOc5iiFkHqdyUmNa0mAjZmNN2qTw eM//vZkhincAhAkCiwBX4Jng pQ83WlFBxBdJZgeh6mUFJlCiyiDWafY6aifZpjfI7ncW6eYFZjWi7iTFpkeobmgP6jdQYAdgbAAnDAB6imdzpojs6R/UUhFSSBCtAkUH4AQtZie2ZfRybBh54jZQonk4LofVrm5p3liTrnWgYpaPqigFZnTnYACjCojoKpDt2BHsDBGkxBEhzBUnrkOJqkJjbpcG7BGrCBG9BpndLpG ApHLyBnfJpn/qpG7CBKA7noI4ifpboidIiW ridA5jA3QAC4RppOZQGfTBHbABFZjh5rkpoW4BG3jqp9IpHYgqHdjBHdxBHuhBqo6pHvRB/qu2aqrCaqyqqqnSaq3awa2Oaq7CgZ7S6acGKpNOgTQ2py1WoFv Ygegl6QqqwDhgR5cqjjGpxbEqZx6Kp3u6rXCAav6wbZy6x94qx94a7iGK7eSa7ma67mWax/YAbbyKqCugaB2JSxa40waq6Pi6LLiq/LkgRtgqvat4ibOp6d2ap/W6qqm6ra26rjK6sIybMMWrKnaAR3w6acKKmQK6wyq6AeE4B1 AEPm68dGThmwgRZIgTyq5FdOJn2qLH2Cqhvg6cvCbMzK7MzK7MSu7M3Sp5NGYyyqZS3eYhzeZE6iAMgSbeRgQRQgLRRAAdIybdM67dNCbdRK7dRS7dN2/l9ZgqMEnugRtMANpmjd3R0UFO3YUg0ZqEHVIu34qe3aqkEauO3bwm3cyu3czi0WpAEW4G3eYgHjLZ7aRq3SAm7gQsETEC7hOsHhPgEUeCzZMu6xeIEaZEHUZsEVXuHkUu7lYsH8ae7mcm7neu7nfi7eUi4WXG7pQu7TBm7hPsHhOoERGMETfGnjym6jkEETRm7Trm0WZC7pgm7v u7vAu/vYoHfQi3gri7rOgHszu7yMsr8nS7u5m4WpEHwUm/1Wq/nQi7xNq3xHi/r3ivzgq ReIHz3i7aRq/lZu71qi8a2O3lnm/5oi73Gi7ysm4UhO/9Esnjtm8UCG7/ q/T/o6fFZjuABNwARew9m6v/yqt6s4v/bpu/eJvBBPI40rv2Q6u4TKw6iqw0lLt yIw2k6t/2Yw/R6u65rwCbvuE0QBFnjBGEjwC7 GF1jB9nYvCScvAytwB0cvCPNw/6quDZdw66KwEbRACzzwDUMBC7swDDPxVXjB0zYwCWvw/1atB8MvD0utCNcw8j6wCRfxF3 xESBu4a5w7DbxGTfFEzvt4EoxDuew1I4f08bxB2Px325wFJPwCYNxGNNv4UKBFbQwGgtyUqjxGjdwBicuFdfxIi yFgOxHu8xH7ex0rLwIFvyUHSBHSMy4W7w0jLyJ4fwGqcuHnPxELtuER/x/g3fsB X8SUP8tHa8QW78QaDci0XryiPMimXsCmfMOtuciJHgRm7cgSPASzHby4ncv8y8u1ecRTEsS0Xr Aich7zch9ncOAG8zC/8BcYM/92sjJD89lSbhRc7uI57dnOMNKmMyMrcOECsQOLMRD7MTYLszbPrhfAMi1j8d7q7e7q7fzhLfv6bvoGtObmLfv2c0LjbQ8v8C9v8Tv7MgfjrT2H7xPLMicLbh0frUJzdEdbQUd7dN6u8EJ/9Aoz9EX/8ENDNOICbjZTtOweLeH2skPTtENfcENjdE4n8k5fs06jdE1n8Osy8Ot2sVA/gRjzclI/cOEu7ksX7RMLsVJL/nVRm3IJH/UquzMGD7Uqv64QB7FXR3VVD3FUh7VSJ 9U87IRL/USO/XYYsHqEnEYo/VcF/VRizFcy/T8anUKwzVSx/NYm3BZ0/VgEzYYx3NbM 5bt24kGzZhB/YR/3VXG7VkZ7UQw/Uu 7Vf7/JmP3ZSl7VgO7YXG/bhIjbZKvYpM7Zao/VnP/ZZC/Vk57VMu/ZsgzVkE/VdAzZVd3Zom7JaM/Zdl7Zb93VqD/Zn17ZMv3bh3rbhvvZrY7ZdZ7ZX73ZtazZo9zJdpzYqJ29wF 1px/Ue87Zf2/VZK3dsH7V5p7AJQ7dl7/Z16/Z7Z3Z4Q/Jvbzd3g6x3/7Z8Z7Zd/ps3IsM2f4s1VUu3bet3YdM3gNj3x J3JMt36 4yf/c3eqP3bUe3gA94fAs4fMs3cZN2gufrgoN3eF84hBt1ecc2X6N4ZJN1Z5M1a8O3dQ82hyO4hy8riDc2XTv4YyN3hA 1if93iu84dQv5hQ84jGP3gdM4vr61aMs1YRc5kPO1f5v4eUM4laP4Zgv2ild4gaMwcYtxki9rF0D3jet3VPM4TTf3hEP3eBO5bWc5l3d5fs84mIepmDO5aot4eic3UE 56qb5eF/1V7N4e2u4fss5nUuqmAtxiDv2gO84n/v5j 85gLNuhhe1lmt5YBu5UjP4lyN6nQ83mZs1Chf5q5kDtaQ/ego78GaPt5s7 IUT pE39px/uoMqOmo3OY6nsmVTOaTX9J7vOmfruXtr9ouT lx3Oq3XOnje nejMm87uqn7 mSXOJu7eaxrOpwPcbIvu456QajnupPruK9DepQzNzVXt2dHtrY/ 7Mre7e35rcvuqir 7EvdbWTu0PjeyqrOIFr 1S3u1q/O7z7JRTMOxHrulLn 7Qrt2RXOpYP 79LdcA/8CAHBAA7
*/
服务端核心代码如下:
代码语言:javascript复制@PostMapping("/uploadByBase64")
@ResponseBody
public String uploadByBase64(String base64) {
if(base64==null || base64.length()==0) {
return "上传文件不能为空";
}
// base64数据示例:data:image/jpg;base64,R0lGOD...省略后半段
// 取出"data:image/jpg;base64,"后面的部分
String[] arr = base64.split("base64,");
// 利用Base64Utils格式化(spring的工具包:org.springframework.util.Base64Utils)
byte[] bytes = Base64Utils.decodeFromString(arr.length>1 ? arr[1] : arr[0]);
// 这里示例base64转图片,其他文件类型自行安排
InputStream is = new ByteArrayInputStream(bytes);
try {
BufferedImage image = ImageIO.read(is);
// 将图片上传到E盘的upload路径下
String path = "E:/upload";
File pathFile = new File(path);
if(!pathFile.exists()) {
// 路径不存在则创建一个路径
pathFile.mkdirs();
}
String fileName = "xxx.jpg";
ImageIO.write(image, "jpg", new File(path File.separator fileName));
} catch (IOException e) {
return "上传失败:" e.getMessage();
}finally {
if(is != null) {
try {
is.close();
} catch (IOException e) {
return "上传失败:" e.getMessage();
}
}
}
return "上传成功";
}
二、利用multipart/form-data上传文件
将http请求的ContentType设置为multipart/form-data之后,则会将数据已二进制的形式提交。区别于x-www-form-urlencoded(即常说的表单形式)提交方式,x-www-form-urlencoded只能上传键值对,比如:name=zhangsan&age=18。multipart/form-data既可以上传文件等二进制数据,也可以上传表单键值对。(除以上两种方式之外,ContentType还有其它很多值,比如常见的application/xml,传递xml格式,application/json,传递json等)
html代码示例:
代码语言:javascript复制<!--action:接口地址,enctype:编码形式,method:请求方式-->
<form action="/upload" enctype="multipart/form-data" method="post">
<!--name即是文件的参数名-->
<input type="file" name="file"/>
<input type="submit" value="上传" />
</form>
服务端核心代码:
代码语言:javascript复制@PostMapping("/upload")
@ResponseBody
// 还可以将MultipartFile封装到自定义对象中,用自定义对象接收参数
public String upload(MultipartFile file) {
if(file==null || file.isEmpty()) {
return "文件不能为空";
}
// 文件上传路径
String path = "E:/upload";
File pathFile = new File(path);
if(!pathFile.exists()) {
// 路径不存在则创建一个路径
pathFile.mkdirs();
}
// 获取上传文件的名称,可以自定义其他名字.除此,MultipartFile还可以直接获取文件流等其它操作
String fileName = file.getOriginalFilename();
try {
// 将文件保存到目标目录
file.transferTo(new File(path File.separator fileName));
} catch (IOException e) {
return "上传失败:" e.getMessage();
}
return "上传成功";
}
注意:springboot默认接收的数据大小是1M。如果上传的文件 其它信息的数据大小超过1M,服务端则会报错拒绝。需要作以下配置:
代码语言:javascript复制# 最大请求大小
spring.servlet.multipart.max-request-size=30MB
# 最大请求文件大小
spring.servlet.multipart.max-file-size=30MB
文件下载
在开发中,文件下载常用的也有三种方式
一、利用url链接的方式。(灵活性高,推荐。如果客户端是浏览器,前后端代码不在一个服务器加载,会存在跨域问题,需要代理解决)。
思路:服务端返给客户端一个可以访问的路径。常用的当然是http协议(比如:http://127.0.0.1:8080/static/xxx.jpg),还可以是ftp协议等(比如:ftp://127.0.0.1:8443/static/xxx.pdf)。客户端拿到这个可以利用网络访问的地址之后,下载相应的资源。
二、利用base64
思路:在服务端,将文件转为base64字符串,然后返回给客户端。客户端再将其转为相应格式的文件。
三、利用SpringMVC的ResponseEntity<T>
利用ResponseEntity<T>可以很方便的将http响应设置为文件下载方式,并携带文件的二进制数据。
代码语言:javascript复制/**
* @param fileName : 下载的文件默认命名
* */
// 不能使用@ResponseBody,当前类也不能使用@RestController(只能使用@Controller)
@RequestMapping("/download")
public ResponseEntity<byte []> downLoad(String fileName){
// 下载目标定义为:F:\bear.jpg
File file = new File("F:\bear.jpg");
if(!file.exists()) {
throw new RuntimeException("下载的目标文件不存在");
}
HttpHeaders headers = new HttpHeaders();
String downLoadFileName = "";
if(fileName != null && fileName.length()!=0) {
try {
// 解决下载文件以中文命名乱码
downLoadFileName = URLEncoder.encode(fileName, "UTF-8");
} catch (Exception e) {
downLoadFileName = "xxx.jpg";
}
}else {
// 这里是jpg作为示例,如果是其他类型文件,以相应类型命名,比如xxx.pdf
downLoadFileName = "xxx.jpg";
}
// 通知浏览器以下载的方式打开
headers.setContentDispositionFormData("attachment", downLoadFileName);
// 设置http响应类型为二进制数据流
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
// http响应码为200
return new ResponseEntity<byte[]>(this.readFileToByteArray(file), headers, HttpStatus.OK);
}
private byte[] readFileToByteArray(File file) {
byte[] data = null;
FileInputStream is = null;
ByteArrayOutputStream byteOut = null;
try {
is = new FileInputStream(file);
byteOut = new ByteArrayOutputStream();
int len = 0;
byte[] buffer = new byte[1024];
while ((len = is.read(buffer)) != -1) {
byteOut.write(buffer, 0, len);
}
data = byteOut.toByteArray();
} catch (Exception e) {
e.printStackTrace();
}finally {
if(is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(byteOut != null) {
try {
byteOut.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return data;
}
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143302.html原文链接:https://javaforall.cn