加载gif动态图的三种方式_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > 加载gif动态图的三种方式

加载gif动态图的三种方式

 2015/5/9 3:26:40  幻想无极  程序员俱乐部  我要评论(0)
  • 摘要:准备:本地图片资源,GifViewGifView代码:/***调用结束就开始播放动画,如果需要用户指定何时播放的话,只需要把timer的开始放到合适的位置。通过对CFDictonaryRaf也就是gifProperties的改变,我们还可以控制动画是否循环播放以及循环多少次停止。通过对index的改变也可以控制动画从某帧开始播放。同理,同时改变index和count的话,也可以控制从某帧到某帧的播放。注意:-(void)stopGif;之后才可以退出这个类。否则timer不会关闭,产生内存泄露
  • 标签:三种方式 方式

准备:本地图片资源,GifView

QQtZxmJ5ZWDmNDLNlsaiWdHUaSSaLs30X/3B+mE1WDPWgZ3AmoAf5Mezz4Y5y3IPhEgeg9nO3ME8xuxiDjJ3ApDHmydbq8A/V1woEWTy8xgsuGvxGKEijp0Nw4Fp7wyAbA8cX2Jv7sj3NkST/J3LeAHAVHsAKK++c5yNAGw7D5dJ3XfOBs4FUwoARyo5+ZKCcU62xQACnDnKcEVpA31gDFeHLdxnXYAn8IU5h8FvEw9SwCz5V8iBI5gLFoCloASUgbVgA9gMasAOUA/2gUOgCRwHZ8B5cBlcA7fAfdAN+sALMARGwCiCICSEitARbcQAMUWsEQfEDfFGApEIJBZJQdKQTESE5CMLkOVIGVKObEa2Iw3I78gx5AxyEelE7iI9yADyGvmIYqgSqo7qoWboFNQNZaHhaDw6E81E56BFaDG6Gq1Ca9G9aCN6Br2M3kK70RfoMAYwRUwTM8RsMTfMH4vGUrEMTIItwkqxSqwW24+1YO3YDawbG8Q+4EScjjNwWzibQ/AEnIPPwRfhq/DNeD3eiLfhN/AefAj/QqASdAnWBA9CKCGZkEmYSyghVBLqCEcJ5wi3CH2EESKRqAnnvysxhJhCzCLOJ64ibiUeIJ4mdhJ7icMkEkmbZE3yIkWT2KQ8UglpE2kv6RTpOqmP9J6sSDYgO5CDyKlkEXkZuZK8m3ySfJ38jDxKUaGYUjwo0RQupZCyhrKT0kK5SumjjCqoKpgreCnEK2QpLFWoUtivcE7hgcIbRUVFI0V3xWmKAsUlilWKBxUvKPYoflBSU7JS8leaoZSvtFppl9JppbtKb6hUqhnVl5pKzaOupjZQz1IfUd/T6DQ7WiiNS1tMq6Y10q7TXipTlE2VWcqzlIuUK5UPK19VHlShqJip+KuwVRapVKscU+lSGValq9qrRqvmqK5S3a16UbVfjaRmphaoxlUrVtuhdlatl47Rjen+dA59OX0n/Ry9T52obq4eqp6lXqa+T/2K+pCGmoaTRqLGPI1qjRMa3ZqYpplmqKZQc43mIc3bmh8n6U1iTeJNWjlp/6Trk95pTdby1eJplWod0Lql9VGboR2ona29TrtJ+6EOrmOlM01nrs42nXM6g5PVJ3tO5kwunXxo8j1dVNdKN1Z3vu4O3Q7dYT19vWA9sd4mvbN6g/qa+r76WfoV+if1BwzoBt4GAoMKg1MGzxkaDBZDyKhitDGGDHUNQwzzDbcbXjEcNTI3SjBaZnTA6KGxgrGbcYZxhXGr8ZCJgUmkyQKTPSb3TCmmbqZ8042m7abvzMzNksxWmDWZ9ZtrmYeaF5nvMX9gQbXwsZhjUWtx05Jo6WaZbbnV8poVauVsxbeqtrpqjVq7WAust1p32hBs3G1ENrU2XbZKtizbAts9tj12mnYRdsvsmuxeTjGZkjpl3ZT2KV+Yzkwhcyfzvr2afZj9MvsW+9cOVg4ch2qHm45UxyDHxY7Njq+crJ14Ttuc7jjTnSOdVzi3On92cXWRuOx3GXA1cU1z3eLa5abuFuO2yu2CO8Hdz32x+3H3Dx4uHnkehzz+8bT1zPbc7dk/1Xwqb+rOqb1eRl5sr+1e3d4M7zTvX727fQx92D61Po99jX25vnW+z1iWrCzWXtZLP6afxO+o3zt/D/+F/qcDsIDggNKAK4FqgQmBmwMfBRkFZQbtCRoKdg6eH3w6hBASHrIupCtUL5QT2hA6FOYatjCsLVwpPC58c/jjCKsISURLJBoZFrk+8kGUaZQoqikaRIdGr49+GGMeMyfmj2nEaTHTqqc9jbWPXRDbHkePmx23O24k3i9+Tfz9BIuE/ITWROXEGYkNie+SApLKk7qTpyQvTL6copMiSGlOJaUmptalDk8PnL5het8M5xklM27PNJ85b+bFWTqzhLNOzFaezZ59OI2QlpS2O+0TO5pdyx5OD03fkj7E8eds5Lzg+nIruAM8L14571mGV0Z5Rn+mV+b6zAG+D7+SPyjwF2wWvMoKyarJepcdnb0re0yYJDyQQ85JyzkmUhNli9py9XPn5XaKrcUl4u45HnM2zBmShEvqpIh0prQ5Tx0eNjvyLfJ/yu8p8C6oLng/N3Hu4Xmq80TzOgqtClcWPisKKvptPj6fM791geGCpQt6FrIWbl+ELEpf1LrYeHHx4r4lwUvqlyoszV765zLmsvJlb5cnLW8p1iteUtz7U/BPe0poJZKSrhWeK2p+xn8W/HxlpePKTSu/lHJLL5UxyyrLPq3irLr0i/0vVb+Mrc5YfWWNy5pta4lrRWtvr/NZV1+uWl5U3rs+cn1jBaOitOLthtkbLlY6VdZsVNiYv7G7KqKqeZPJprWbPm3mb75V7Vd9YIvulpVb3m3lbr2+zXfb/hq9mrKaj78Kfr2zPXh7Y61ZbeUO4o6CHU93Ju5s/83tt4Y6nbqyus+7RLu662Pr2xpcGxp26+5eswfdk79nYO+Mvdf2Bexr3m+7f/sBzQNlB8HB/IPPf0/7/fah8EOth90O7z9iemTLUfrR0kaksbBxqInf1N2c0tx5LOxYa4tny9E/7P7YddzwePUJjRNrTiqcLD45dqro1PBp8enBM5lneltnt94/m3z2Ztu0tivnws9dOB90/mw7q/3UBa8Lxy96XDx2ye1S02WXy40dzh1H/3T+8+gVlyuNV12vNl9zv9bSObXz5HWf62duBNw4fzP05uVbUbc6byfcvtM1o6v7DvdO/13h3Vf3Cu6N3l/ygPCg9KHKw8pHuo9q/7L860C3S/eJnoCejsdxj+/3cnpfPJE++dRX/JT6tPKZwbOGfof+4wNBA9eeT3/e90L8YnSw5G/Vv7e8tHh55B/ffzqGkof6Xklejb1e9Ub7za63Tm9bh2OGH43kjIy+K32v/b7+g9uH9o9JH5+Nzv1E+lT12fJzy5fwLw/GcsbGxGwJW34UwKCiGRkAvN4F7w8pANCvwSMlbfyOIhdk/F4lR+BHePweIxcXAGRXm2Soib4AlEO1OA2APtQYiON9Aero+E0nRJrh6DAeS7EJHk0qx8bewLM5yRKAz11jY6NNY2Of62Cy9wA4PTJ+N5IJ8wnkasAP5D/5lk68VOIheAAAAdVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpDb21wcmVzc2lvbj4xPC90aWZmOkNvbXByZXNzaW9uPgogICAgICAgICA8dGlmZjpQaG90b21ldHJpY0ludGVycHJldGF0aW9uPjI8L3RpZmY6UGhvdG9tZXRyaWNJbnRlcnByZXRhdGlvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cjl0tmoAAEAASURBVHgB7F0HQBQ5F/6owtIRERVUVGzYDsV+h72L5Sxg75568J9nwbMgFmyH5fTs2EUsZ0PPBvYuoqJiVxAQERCld/Z/md3FBUEp6rGY6DIzyUsm+WZe8pJJvigdOXJEDO44AhyB7woBpcTERK7439Uj54XlCADKHASOAEfg+0OAK77smYvTZWcAnSclyl1/CPl2Z2lJn88Dk0nLZ5aoTBGhEYhLzac8FyvRCBRrxU+MjUbEG3pZE/J4BvTiR7+JpvAcSpoZB08nRxx8HI2Y0Kfwv+OP86eOYc/2NXCws4FIZIebkRlZiWYmP4Sdli7W+L0V/JJeHEFpI13sfRSbJfO1TtJiI/Ak4CZO7l4DO0tLLDwTKNwqym8FSnfeiaQ8OmKZKU/hoFcaIzz885W1jPg7aF29MnZcOorZ9o44H5ycr3hcqGQiUCwU/63fGlJGEZZfeyOgnBHpD1c7SxiZmKKyeWWULSPCSFcvxGVKHwIp9vFljhDRi29qbkrhurC0c8PTeKmAkipeHw2CWRU9hHo7o1nzZli6eQqG/+IH6/atMXBqL5TTpKKLk4SKJSldEzUp6Vu+D6hFTEfog2t05YC6hmKqWCIQ8fbzFYDvKlsqgw2uvqMKhVrXC39T/qhMIptViM9Mx8UNTrBk1yJLjHT2xKsUiUYHes9HA+uf0GvEZNRyWoIWpWIRnSBGSqISmrSqBDUkZVVsiVGv8IpabVYZxqfroXFP4PCWiwiKiZHkM5TCoxIFkNITmcUg+6UjMT4BxmiPOhXNKJI7lu45g4iE/JoLUtz5ocQgUCwG9+KDr2KHxx00GDgYTSpEwUmnNlYTxOY9HPDrj4a4uHoODlFDaD7pHwTM64LAI6RE/VdR+FS49LdAwJ4FWHKYBEZ44v3KZtjv8gdGunmix7z9WDfcGM1Nf0Rf1wFYcrYO9tgcRn+/YXi6ti9MlJ+iV9lm8Pnc47Sei9Czk2CorJSnZPClfTh4T4weI/rATHwPvQwp3XYO2ParPRqqnkCdbnOF8vQt8whL3L2BCZ6IXdIDqmlkragnYUXrQWjidQANHq9H6Z8mZ7+P+WK8uTcM6+uWhTMV85POfC5eXrNBn7I28P2kIDDr5Av88aPJZ6R4cElEQLU4FCozPhwXT1xE6a79oXt5maD0GLgFNzf2hyY14r8M7owxZZvCY+kUHBvVBgaPWYsMNGvbHt1sW6CPbSvUXrcTYdplkJaYCD2LRugJT9SopILD6/aifhNgyYxdQpz+pOWjp9bDZFd1bFhkD6+ERNxY0RrDxcsQMPEHPN47Gj8M18Ld+OUw8V8J4xZJeHV2MgzIQEgOPo8p48djE5nj1tRC2yjdwR3YweOvAUiIeI7T55PQ/uc6+K21tDJ5fhQ7fBqgrNk9uvcYHN65CFXxHK/c68Hj2HPELhbj+fresHGSVj1ldTBq0gAMdLuMP5tdQK8TP+GI7QUYW1PlAB1Mvh2L39RUwR4ay3Or5PlInNZCKJfsTzo14qqq1NV58hIGpQ2gpiGRh9I7rBBVQIx3MGY3N5KIS4wOWVR+/I4QKLKpHxIcgoD7AUI/mvWl7/rfxYOABwgNCYU4M39vVlriaxzyPYRXiWmIjQoS4J89tA002RnlUEm7Hka7tqeLQDx+HYM6PSfCnK52ObZHaW0R6tjOQpRhS4wc3BxaWpXReUB/NCZl37v1JmwcnNDGvB0cpg6EeeMxcB5F6Zj2EpReh5WeGnFlkQ4CZ7aA7QBb9J57hTw34NqLdChnUq3TswZ0SEacGYGlnTsLSu+0cit6KF2E2yYf+Nx9hzSIkfDqCny8buO9chn87LxAyB/qD8K4HvXQfIIHEhNWQMVnEerokNLTHUbP6ylYENYTvBB8fin5mGN/QCTmdK+DN4kqUFZWg45aBhVfTZJJ+gt1UmLB6EhH9LsIYF57iLSo+yD9rbn+FqrqJKesA504X7i4zMeGNWuwerkLnJadRGmHJngbHSeUmZWbf9NhoH6frsiKHxsbi25+Gujpry38etzRwtDz77Dz8j08f/48X8ovvMtS/NWVdIQzMWQderokgUzVD5WITtWeCHj9DF4blmJMzyYIPLMbk0e0R9lWbgiPewB7HVNMvw60s3wDh7KmcNz9HJqlRAi8EQGxvhgbHbugrLYDglLoHtQff33/OcZsOYaflXxQdeoe3F7ZHnsvBSDw7lmY1yknKFtmbDCuk5ltPuUYZo/sh9/cVlCPmZyeEqmmrARKUFczxE+2bVCNgto174DOzSyhKq1gVNSqoe8o6piT27j5IF5lUJmU0uG9dhL5BOJnyzJY5/MCePMUD6jFjnv5DHefv2R1QjYnFsfitlsgHHf64lXgMwQF3oUzScSCWQZSp6YFi4rA5CmTsSZQHXXr1EWDH6rC/SCzPrj73hEosqmfnp4Oka429rcp/QFLcSVkpqUg890rPHv2DObm5lAlEzU/TqQttPPYsfsiJrfoIyhdRpw/NgrmsDnMjUphn5Mthv5bCVf9/sKKgeOwPO0Z5vxQD0t8/8Xj5LGYd/4ITKZuQmvbbghMuos4jEDXJmnYR735Wi17wNzNBy6+81G5lDJVTO9xf1Mgqo+3QuPYJlgSmYwyHTvCx24VypD86E3ukmyTbjP1DgwNl6hX4ntStNydOF3yzSxO+NYWh/V2ZTExnvrphx3g0qoXzIJ04eBzFMGxv+H9md8x8npPDGynhWaDu0Lr/VXMm/83RA8jqKJ5iBVnWDfAVbAqJDmgLscTH8yj2uBEy5owMFJBZmYQwkmqujqzDiROp6oNRo1rgdQ1S5A6ZioGWaoi/XVvGgf5EzeXdUUjfRWZKD9+hwjkTxs/A4yGqi4phQoGXkgho1fSMqeEPsP9cfWFVj8wMBAVK1ZEKY1Sn0kJqGHvhDHjd2HD5iFom3gX/Rsa4MKaGfCimOa/LkG3qvrwp4FpBG5Cs45klP/WCZmBF7CPWmOYd0QtI20Yl2mO6vgLxlZt0FU3GNObLMK6hKrUpvpg8+ZXdGwPczNtIS/poedJiZrAr5o20o7RuEGlcjCo3QOjAifDnUYKpjWW9IeVdaqgYzvA23ME2iacgt693SCjAlSrSJVSSE7yh9UQzLGjkiYqGNPRi8o1Rxd9qoVhGdNl1IeRlhIenvWH8/o1MFriilrdusM6GAjf9yt+qfov+h5riV3Dp2PDERXoKkkSZV2O1WOHURdkC6xJ6Zm5Lk6NgjeVYZCFHktY4khcLI5GCl0d2rsWic+uoOIfi+DR8zp+WnoW76aWwZrt4VQ5dITQ5ZHF48fvAoEvovhisI6lEhnnkhaHKT8zrR+8jqM+rwFUEqk/GhyMqlWrQlkl795FKSU1KJeywPKQi9D/dQiW7HaD727Jc+g5ywOrp3YVLACr8e7Y8vY3DF+yCWMGbpIINBkIr00OMKaR96jnd3CbtPIHGuhKSIil0fQJGNlfCZ6eZTFikBX1xfcijax89jnv0JKBZJMvwJtL/2DDrOuofiAaFzdtJKVn7hDq1x2AWeP7Ysio3hi94RpSF6zCjbeZqDd+KcpOmQSPctrQJKVUEroo8UIs9keLfmJWz9GnxS4LbsI5si/muo3DYRbYZAyOrJ8DC3VlWKw8je5kui96Ho/UZDFULXrif9WBqIvvEJf0Dsr6P+KXQSwdIP71Tfw1+ie4+rbDmX/60n2TcPngEQQ8OEiVGVVA9CVRcFSufQ6NMHQz86Xb3bkDUd/BaGluBrNlh2FexRZWF6ju9LVHp5HtUUsj72ciJMD/lDgEshT/wIEDYC1zXs7c3By9e5OpmIvLIAUTi6kfniZplZToPClVHb08XyBTWQyl1FQMMEvBKE1NmJqZfpSCodV4Gvwan+WvZNAQLrsC4BT/DsnpNEqtYQAdpkTS91NJxRj9Z+9C/5n0jTsuGemqGjDQoi6C5Pa4sa4tPMynYga1qKA2L/BuOJ5HN4SnRzckv75NfrpQo6DM1DcICW6HbUt+xmuXGnjtsACt/Gagk+tzbLwSggG147HD1QGLb6bB8ZeXmNe2KdyMHHByy1RUenVY+PbfpE4VUkCg4XgawJsgK0Ij7KKvBVLjB8patTGNyvO/+DjqJqhCh+VV5pRVkRn3AlcJ+vYsU7Iyqivhuqsv4v74MatFTnsfgYAz7eB52xNNS5MgWRMGiafwm+thOK70gbWe1HwnfyvbadjWpx7aNakPA5mhxeDQao8rvp7oaW2Pam5judLLnkMxPj46sQZ7rkdSDkWwneCIH6i7G/3wCFbtvSXkunG/39C5lpy1l4+yZH3Hfxf9Dlu2biEFJq3N4ZSoRRs+bDgMDA1yhEAYzR/8sC72dFJG/xOSuBa6GYIOPopVpvdYicLoY9bhcKy3fofalrU/SiNPD5Yc+7EXlv1yc6zlzhnO/JhjSsSmtYo1oSmr4uTTYecyWXYuLXoS+bH5PUJ8WR7oOvzyZti3/1Vi4lMw2jnDb9tU1GLf+vLjpOl/VBaZP0tDlj/K97v4dBgYSAY7heRlZWXyslvK/OTjsnP5csnSZP7MyeLIpyMJ4X+LIQKPjpLi+zHFB2p2GYP+1uVw/9AK7PePEfys+jmgey1D4Ty/f2TqICi1tbU1bty48VFc5p+b0ssE01KUhBY/gzqUNQwyMMYiSQha91ATj9+pCmFvxSZIT5dkXhbvs0f2wuZ8aXNGkimAvL+8nxopvXxYznN5Wem9BKWXycnlwaTZCJxNGIK499Ry57AyZOKfPOZVltz8Kd8GOStxWV7l5WV+OW+clz+Tk4XJp5MzPr8ulggEPwsDGpVGUJBE6QubSdkrIMRv3qw59PX1s6XFrpn/p1wmTftmn+wzkpQw/0dVmBnpCD9XOgdZvEJYMqsc5Ju2T6VYTMMYWtRn19EzgAH7+iBcf8W8Zns6X/E+POlijYAY7CuREWrX0ENiYAhiEkPwjPS+Yp2qhc53tldLRVUFrWxaZUuMXTP/TzkxKbyYzEdWAZx6nom+HmLh5/0skyoDsqClYZ9KQ6HCvrbCKxQYPLPfBgFVVKpWg7quQQh4+AQxVBHUqCT3Cb2Amcim+Cxu1WpVhe/u7Nzc3Fy4ZuefdGz1HGvM6bjaWxnpMUpIo9+aU5Q8KT5r8ZXyWmH3yYQVOzA9MQEJNPiYq6OJQ8lsYPJzRlB+5XK9CfcsOQikQ9+sKql7DLz/pe64XhVUkA3mFqKQWX18+bitW7VGSEgI2DE/TpkpN7Xq+0blLs0sfCaTp8tMwFn3BVh+lGaVGdXB+N9/R6c60vnk0kiZKSE4dSocrbpZQ+Mr9U1Dr55AaLmWaFpZ8o0/z/zmEnB16Qhcb7kIvzUxRsbbAPw15Q+ci5IJmtKU47noXldSpgeHV2DapjOyQLQcPA9T+9bPupad5CWXER+AWQP+wH2ZIB1b2v2OCXatoEV17e2t47EqZTg2j7UWJCL9dmDknH0Ytng7etf60JXLTAjB9qULceBmKDRNW2H67AmoX1b2CUCaOD2bU2uc8feppzTiSesQXGgKdAFHkOWyyU8LjUAaVLTLghacIorMfFElM+irU3+/kO6jFp+lwwbyBtgP+OSAnvz9lNiXK1L8/n9KfnZ0tFtMP+k16Psyk8nLPT/OlL4UFm/ehSV99bFm+mwExMs+SktiiVMjsHfjdbBZrl/LhV/ei2tvJLPuCnoPy75/4Odq+oRDFNaMJ6WvPg47vLzgdfgA/hxXGRtnTIVfVAbSo65hDin9r8s8KMwLHn8Ox6Uds3Atir5byrlPytE033D6tDNl7W4c2LsX2/92QfLuZbBfflFIITMlGQmpkkf7jiYaMaXvOcsdvWt8UHom6L9zNg68+REbd3tiUpPnmLXc+yMLhD2bv0+ZYulOejbDRFjhtAcJ9Ky5+3YIKAkLMOh+qtowr1ZGuHGVaqZQl6qIKk2eK6jLtcVniZQxltwgPwmy1py16p6/5y7NwpTysHhZjHcvXqOu4zzUMtRGZvteMFo7C3FyGi60cAPngDWg9j3DsHDXPJR+chjTXbYKfprVumHRvFEwCD6E6e5BaFDmOo5eaYmtnl3hMeU3eIdSY2VkhKSESli4aSZqqYVh+x+TceAZZVyzOeatmQLN60sx9wLd4cIwRPafC+e2GVg+fQ6usJsakcyfE1G/dI7WkGVe6gIvHcTD2qPRJcIH3klmWOTQEcKgPA0G1ujoiAH7+mHTyYdYbB1GvR8z6GrRZCeyXHQsemH2MEAjx+eLpOjPybHFOaWgWkqFTEArOC0fiL4TdyNgLA3EUrpaOhqICzqBobQqsfO0dRjR0PjDaL40z5mpCTBqTKsHNbWgUo1mDZ1n8wzo/ZKGs0N8BNB20kBY6GgjvQGzIJ5nmz4sJ8pPvxICNTuNx2z6JC64bnTeTXajDpg9u4PsokBH+WdcoIgyYVVVVSjRBJ4hMyU+Ynrp2AQeecf8WPvDZHNzjcZuQAM2l5/kAk94kjL/gAraH4wRFa0acFgwFjPm3sdvKyaglmYYZpLSt57njkG1UrG4z3gcvtcTQzUSEPr0HEL17LF4dXvcWTUC3vpDsHFRezzaPR1Lj0YgnVqry3+T0huPgueSHxHgMQmzXI/DY84QjPZ7hDv1HTCxcwPcXdsfV0zGYe/m1ri0qB9medjAy7FZbtkX/NKjXyI8JZ0+WRKLj2YTVJL/JqisgRoNNbHrXTy0q7bB0LpbsWBsPzKv66BDm47o2rknTNgsIDn3KTk2YCo4FkUaTdW4JvX/TiKZWgFVdU1EHV+DUQdCKC99MLpp+Y+UnsWv0bY3oqY5YfzdaoTbM7R12vhRN6r+UFeaXJyOy9uXYPH+SzCilZD6NDuSO8VGIHdNLECZdHV1scLOh1747KZqziSY0uvq0qhkbo4tN6W+5JnVU7DiVCjGkhlsJj+1l1pN40om0NR6jaom2rRkVRtT1y1F0MvH2L3tKq5Qmj1ovapYmZnp1tRVsEMF5bc4cUUTv23ohbI6KigzYCy2HV1BU3WjcJfWzRs1f4kju8KRGkef5Z4dwAtxZ5Q30ERI2UrQpsZY36Qa4LMW85ZFoFNbN+xqRC3ipxyr7NhPSUN6kl2YjYGAreNT0cfP87xg8/Ihbvpdgfe+pThMlGC/rd6GNmYsrsR9Ss4mt7kaH+pJmj5MZUp6gob2ffHScx+WnW+Fqa0rypKWHGnQ8Mbxk1QxWKNL18YI/vcZTnj4YGizAdkVW0hXFeVqNcOANi+xy+s4Agc3hDktcOJOcREosuKbEZUT+xXFiTPC8ffoMfDW6Eh9ydWw0M6lRWGKQ95s7XtmSijW/TIJt2t3wAjb1hga/ghvpP0daJYn0gwSpBc7lWbMq6mwfgZdZpkhGUjTEKFGRX2o08urrtUcAwdqoSydvxIUV5KQRR9XbGhwC5cueOPveZOR1HAMDjh3k66Hz7u0aiItUjpfhKVmwkI2B16cjBcPycBvrArW5151qyacBzdAp0q10Kn3SJz/0xZL995Gm0kfLIpPydn8IvooA7EPb5KlZABdGvlMTI4GWvyBqXbNEFbmNX5Z7oK2dTeiIVvUI3PiFLy4EYWBrmtp4VMpZLYwwfm+C/Aotj+a6ktfC8r3+R0eUG4zED82+hFVrH9AwpkBOHY/ChNY14E7hUWgWFTbj/fPhbemPXb8PQEWmhlIJpM5N5cU9ZYWrhAfXdgdauXrYqnrBLSvq09ceVGgri6rFUjpmPaSrivro5pZFP72vCoMWN3at14YD1BT1oNpmUREqldH71690aUecOBkOJFesMomCW9pVh5zByfbYtUTPfQZ4YS109oCfi8RL07D4ytncO3RG0Emtz/a1duhk+ZTTFpxLGsQ7MHxldgRqonBXeuATYm4ud8ZRx7T4AGhn5kUgvs05drCIvtXjM/LJZKCJyE9KRlvHp7BzLmHyQwfBAuqwNKpKJpa6kKFV76tI0bXjcIc591Z+ZHlmwwb3H0YJMi98b9JpTcScHjz6BrOXHlMBr4GVMIO4889vkKa8UE3aBUgUM1YV5YEPyooAkVu8YtcbjLxb10LBUI8MbinpzQ5U8zevgoN5daMK2kYo5HRZUywf4MFnk7oYbYR43v1IHkjmiVI/JFr/kXXydTaaiZI0iCTu/eSpQh2mITePf4ErQ8SZNPFGrCdNQNXx8yE7XaJaF+ntcJnsLJ1reG77DdMipyLuRMm4MjEibDdIJHpPGkF9JUy4L1zBXZU/QNeNctKAuT+0mI7MuWN8Mva+YidPJMGIqWRaTBv7IJ1tLCGtL50H8wdEgxnpxHYKI1r1JBWInarJpcSDfrV/IQccQwY0JTIP0cPyIpj/fMkTBz8g3AtPFRJ/UcZ0kDXKfNwbsgsLD3RFM5dqkriKGuhp8sETHeaAlshI5ro67yKCEFVcP/KBqw41AxNDtVA4+Gz0chxjoAhi2g9ZA7aVvjQJZEkxv8qGgJZi3T+04zLXtKcmWCNsLyTmvuCF8VJTk2mUW0NGoWmyTD01UCjlLQeY3YMmanea1Yirvkw9G5gjOh7OzBsZhg2HJwKE7a2nf4nJ1Aloa0FDZYui5MjfcaOw6wP4R4sjyRzb/sk7BGNw/w+2RU1a1GMLB0ST06MQUqGKrR0tSAQCLEw5oT7pCMhlu5fSgtaNMYh3F8S+uFvXnK54SXNnxCZxWNOdj+ZvLwMC5eWN5k+/8mXUeYvDBxK00onrIlQIXs5WBrcKSQCxUPxCwsde5FllYP8uTS9t357MH6OB5mwEtfXeR0GNyovvaJDLnE+BErP5GVo3CDQ/wnK1K+N3IYhco3L4ssUMKeAVPGyypAzXHadXzmZfEGP8mXMK25+ZPKKy/2LHQKKrfifg5O9rGQNJCSkQEWDWnamgHkp4efSkoVzBZAhwY8KjEDJVnzZg+HKKkOCHzkCAgJFbf8UA0ZZd0AxcstzyRH46gh8H4r/1WHkN+AIKBYCXPEV63nx3HIEvggC0u9fXyStfCXy2H8+UhIk9F4ZNElOjT5tZ9Dwun6ZPqhkMTRfaXAhjgBHoGgIfHPFT4i5jvpNabSNrb5Toc53Ohkd9JH71eMjeBf5AwzK0FS6/8qlxuFVRBIMiQg/x5qZXHPEdqRlM4Mk21qRCCP2TFODpuibwyrkL/ZtNNR0DaHJpuR9ASdOjcbDB+EwsbCAIVtNyF2JQeCbj+r7nbelXXWIcpv+Mf59lWwfsRk3P/MlfnllZaTQfHd12n8qg3yZfClRA9RoMPfT4NO39ujoaFo0pApDY8MPSikXK5EUhKasQNdQN1t4zN01KNc0EaHxY3DX6zTe0RTd+PhYRD57inPnVgEdvHBgerusOMd+FWFd3SvwGttASP3JLns08OmN2E19s2Tkbvv5U8p7EqtLPlFxpEY9xdX7YbSNdjTuHt9Cu+e2R5DXr7Trzzss0DZFpbtvMaiaME0x2/3YRhwLtCvD4NprjK8nLBjOFp7bRfq78zRL7yh+WRwKz1QHeE1qnpsY91NABL55H5/x4OtoqkBTQ4X45VVoMhgdaTmciKhj1GieOfMT0Q6v2vTyl9ZXh4iaXuGalrlGvJZ0EWQ4x/gtp/3mXRHNuL3IhV3fC1stXeLur4zK5qa05t0GO6+HycQRF3weDpYiGBG3v6mZiRC+9xYtOGeOlgdom/yAqfObwFBJhBifgRh4JBFGND32Tb1+cPzJHDE6eoJCp9DGFnv3/It061HwmTiQ9qM7AO8rvjjrdReuI35ALFU8EeEf9qqX3ODjv75ulhDNOi8EJD87BhvKe2mjFVSeNPh5utD0WVpzL7KEy7ZrWQQZ4sQoBAQE4EifgQhutRBv944SNhFhK/JKWduipinN0Ze617fP49i/3jh/7jyu+b9G9Qm0l579Upy/cUXwO3/OG/8eOodXKWKkxUYjmvZBTCIrRvJjlVAq8a+VRYcxc2E0azSOvZSsY5Clz4+Ki0CRbdKCbsShSqtP1GiKqoqUaEOFcpAhzqAWnvzIEpA4IukkP8FR1aSuJKmfxIzmR85plu+Ew8eUhe2lkp7tRbXWw4iF5ghCB/1Ei03icHXLFHRqXQ3qt8LRr7oSttJ222e6bEOQS08YULj3kl7o03Iafnjnjpito/HTRMlagX03FmPn1K3EZ7UaUR16Qj/6FlYuDcRob00EhcagnIoaTbN9hx1r4uHhswHa7xIRdXUdJt6ri6neOzF50RLsPmMO16P/YmKbynI5zn5q2mkNjqO24Pns9Dr4jtiGt6v6IvHWGvw4ch+2nr2FhuoPMaJFG+jVCcHEhqWhol+HthizxrnwPfCivfJUUoPgOtIJ92lV4F1fL2yhCqFqXCIGrd+JlmnR8L8biDKmunhMGzGsrjsX++ab4OndB8I9U1PiEJNaEdbU4/L3nIKhuyJRrzytd5A6cVwYfAN90XvoTZRrY4QpTrvw466xWRt8yOT4UfEQKLLiM16+oKCgXKmz2UYcOXn7UmifpzRau6+ipJKl3EzpmWPyKjTYx6bXsXOm75nSCoJdS9a0s3CJS465h837k9D0p4o4MnMYcX1tw6axbaWhtGvt2E3wvOcJe5ej6O7ZHSm0IK7pD9VhLPRXDdF5+j7sNKA16bSqrxHJxvYbghlbSmHuIDGWrT6HdvDF2BGMgieQfiPR6vwOHGs4GuM71kfXHlUQePYNWjRtDmNavLNvPy0Y6uJJBCE9kHpdD9oDu0qUnsz3a9tnoM046irAHPYj6yEysSM8Ng6jJbrHsD9VHw3Eh9F4og+F+6BRVDTWtr6FHou3oV+TmgRABXSnkBjaQpy5wAt/Y5LHU1pW54vnt50x+WY9GFbsjtUL+2PztTBY79iJUmtnIE5XhPI1e+GPxkI0+EZ4oXyr8ejaUCTxyPHXmMrvax+NDBVd2v6MIKH7Jb+/hMTB/tjjOTlfYx45kuSXxRgBSVNahAwyfj624UZuLreNONKJAocpuiqNiJUi1h2Z0qvT0jb2YyP9yjTol54pWZrL5JjS5+bS3r/C4U2RFJSOsHvA1IEf1rPL5JvYzaINK4nGSqyNLoumwnNUMzKfRbB3mA2P40FoP24wrf+XwhCXiocz28Cg8l8wbVwGZX7dhOv/TsRK70tYax8F3WajMaZDNVnSUHuxGX0H2MOSTPTQQacw+RgpD1HgPDl9FobUyjL35vIqUvqj8LjxDBEvd8Fw02H4PIsTwt6/OorTIQnQtewNdzvymrANp1bYU4XlDk/a++7ZyTWwrVuWtsC2Rre6ZYQ4Ft1oZeCu1ehqTozIrUdhpctUlKelyJrUPSllpEeUW9Q10tWksRFBPOsPqzZmDLGDvb298LO1sYS9s1dWF4L28cLeGcMwsL8uEaboYvjY/vjrcjI6NtVEHONO465EIVBkxWdoFGQjDtaiS37KdGQ/MuXZelY5p0YDeqxSkDE8sZafyaQIO13KC8qdC6c53vYcwbW7uyAhMgi+5w6js3kyNvZthbLaI3A1IgM+rrbQrdkDz+1mYIKtF8b2dcS1xBfY8KsjHBd6IlTzLhy71kNbV9YyU0MsfoswnXE44bkbm2Y6oGmzZuj/ixb1pQPxgOhvW1SVrK9/fs6dFPov9KpTHtpl6sPpFFVEUSnSnElklJQNYVHbGuZ6FVDB5MNadyOLFpgwz43U3hdrD1GiUvf2FnUrzpB9sNkWlvbEtht5H/sP7cZl3+c4um8f9l8OkYlKjqTUV7xo6bK3B3Zs2owdOzzx1x/dcFcsGbMQhJR1MGyVFw7+cwHtrOdiyy4vuPRvhfdHT+J5TPYuVvbE+ZUiIpBd4wpZgoJsxMFadOZYI56RIXmh5Ft0VhEwxyoFNh4gjAlQRcCcWDqIJ1xk+6OK8nWBJQevZ/NlF9d3zwNsjVAq4R5GWI7AXZXSsGzcHkN+X4xz8UGYjN04+TgS1vaLaYfdf9C3Tlv86RmLo/Md8MeIQbSUdyoc+v6MQWNnY9TMIzg/s51wj8zwBzgXJiYyrSRc8niI1DQxqnfuhUNt6sE1rj0amkgLIkh/+BSWniJTeiEg64/EkKdL2un2xDIn7LwVDf0q9dGx93hs2W4Pz/HewiBmZvJDuAw5hJH27eC2ifIwpwMi7sbDsLwZjewHQs/QFOXF13CWEX1IHaukXvoSe7KOCKoi+vxI9aOhvgkxGeTikiQ5Efj+qTJo+TNwLuBdLoLcS5ER+CKKzwDI70YcTHmZMjOnTrQ57KdMl0z5VcisF6wAdqQf82drZ9m5fOXAfLM7TXRz2Qpstofjtgsgix1Epoer2xxhvxnY4NIbmkRAicDdGDBrD17FJAocgcG+57CfRPXU1Gh/glqoZmqApOREygx96lMLxsYlbljtcRbX9m2Am+tqRNLW3zJ3/8A66A1oTR8FSamZBlGFpmL+g4RZtxX1u6XmSrlGfWmXEWcce/RO2ObatfsSkqdOdF6ORud1M49izMTNeBVPmyfFPMWBVTToOMJCGMQ8MasPomaswdAGWohI00YZi6aYd2ghujRujErW7QTLY6ynP2Y2M8m6Q9CxZdjUxg4NtD9URm9fBaKa1CrJEpSexPjexLHj7rDr7gyVDp0wb4anQGwU/SY6pyi/VlAEPm0bF7BQbCAvJCTkowE9+WSY4jOFZnoha8CVGR8e9evZMZP5Swf0WF+f/ZhTpUk+bHzgI2cuUSLdmv3w7Gwq7Ft3QtlxMilrbDj7DINqMvNZF3/dO4z/2faAxepRMgE4rD0DhyalaZggHTER4YgSS0zttLQy6NSvJyweRmE7OqNfrWfYGihpDWMf7UVzJxGOX36LpU6D4exbCacjfOHUsi20ZsxDE+fOsHyzBoec+sKi40ycWBKNTlYV6J7msG1DhzjJJzdmBxhJyWy0dMrDKFmSraa/HMKMc/VhYews8bCdAb/53YVPiV3+DEAX8r3imkB/aRxE2Yhou3TIGpIoZSrDjiougdCYBhafnVqFev1P4/CzZUL8FzfOIyQ9FUcHu6PaGWn6lFLs44MY9MNAGl4klh1bO7wI08bkpePRyEIP7lVLo5NzCsotPYJxr07DxuCLvjZ0R+6+NQJf9AnmZyOONFJepthsIF9Vhc5J0zOJf1t2zl7YdCKNU1dnSk4tXiqFSXOpIuv0S1Eq3XAiEgM+QFa+ySCcT7Cj7+ixpBIfT9DRqdoemwMSsTo2jmbY0YAYTeCRzdCLfbYbplZj4LDjppBgmjgBKSmpqNDaEdNSiecvOhSRD15Qy/cT3jx4jql7FuKneupIDfsFl39+g99+aIueB/3wZ8dayJz8M1YP7Qr38y0wzvA8zqAn3iasFO513o1oum/qCOfWk8/jvDT79cd6Zp0ra1tgxtFEzPhQtI/O0pI/3i2VfbWQd+mRl/F7L3dsuH4R7ctLQIx/fgxLvRLRevMpjGr8wdjXMW+BP3yuYiuRjOScpWfvHgRQJeY6Yiys9KQPQ/5G/FzhEPhPZu41aCZtuVnrxEj3ZY69U8IYAPNn9r9E+SXBSrhzQxkNbWiUSoFcRsRV9KrcFj7m1sLnQZ9Ac3jcJr8aEsuisEX5aLowJZSeSNXdJ2b9FfZePF7JQ+CbV9/v4irg0J4HSKMRelVmylMrnkk2fzpVAmpqbJRfiVraDLDWXZWu09lIPtUNrI+vrWuhcE9AxbgZvN6/QeDTF3hL8/jdLWrRPAK5yq6QJWKDdDkdV/qciPDrvBD45i1+NM2TT8ljZDuvTMr81dXVaUor9ce54whwBIqEwDdX/CLllkfmCHAEvggCX+xz3hfJDU+EI8AR+CYIfPM+flFLFRIcgri4OBojkHxaE77/06wffX19lC9fnub3F73/XNQ88vgcgeKOgMIpPlP6ipUqZsOVzR148vQJLSNNQpUqVejbPzdksgHELzgCORBQOA1hLb0KtfDyv0qVKqFMmTLQpj3cX7x4gbRUiTWQo6z8kiPAEZAioHCKz/KtRlNs5X9stF+ZGHtMTEygb6AvLBNOps0kueMIcARyR0AhFV+VpvLl/JUqVQqxxCDDKgBN+sbNzP9M6SKg3IvOpgY/JUYeO1x9J105lJcg9+cIFBME/Pb9iTlz5mDB5osCbWVhs6WQip+zsGJaL84sAEYIEhwcjNevXyMiMgJhYR9ot+TjiFMjcHL7GoyqVx+bAhMh7JAtL8DPOQLFEIHMlGDcfECLyMilhfgh4D2t1SikU1jFjwwPxq0TK3H3zEY89f0HhpppqF27Fho0aAArKytUrVpVsADywiUhVR1Nx42i4I/nvMvi+NPqPstudrAlnj5G3mFp54qH7yXTjf02OMFlw2rYCbx4Itg670OcJIi4/3bCVuY/cgRsbRzg/55bFTJc+bFwCEQ99EV4VtQY+N0Nyboq6InCKj5UdaBh1grpFXojTNQT54Iq43SAMt5GBAsDf2XLlhWW3uYGiJK6MXqPGoWRo0YSyQXVnrQ0IDeXGhuEwDP30G/zQ7x+6Yfh8a5o+Pt+gbUmM+Uhlvx2EkNuPUfYo9MQuQ2F+423YHPz7VuPQa0d1xBFpB92mrvh43uXsXtxxxEoPALiVARcZ2Qseug6wFZYCR58I4Aamzxe3s/cSWEV/3WSAQJi6+HlO0OERRI/XFwCVGh5WkxcCu2OmyDM7WddgE866VyAPGVSyBqYtAaDmlSCXpla+N8aD2D3DtyJJ95ACjOfPg1dapaDvlkDtDAHUXan4d2Lc8SXMxcze9Uj5mBj9J93mhbj5l255HlvHsARkEMg/f0j3GTNvagCzCuZoxJjSE+8i/vhuRO7yEXN9VThvuPLSpEQ/hKX9jzGuzdRtLxWhHp1jbH/RggN+qlgigPo+sss6DEvxVbNS5yShiGdxBBZqMxHeqR173nBL06LF6g6c8TglxyBAiEQ4n8NQu8+8QH+XvhAGjcN1289Q7PydQqUFhNW2BY/M/kdlNXD0X1MQwz6rSWMjNPQvsFbWJm+ogG+1wUGQhbh9fVjxJN/XWCcQSk9BC5YJLDnMKKLg3M7A20GoIH+ByYbWTzZUb9iIzp1xt/etAKRBhF3TiP2XTLP+ACiDCF+LCgCYuJM9Pdl77QIjTv9jH59+uHnbkQaSz4xfrcR/pmvV7ndT2FbfAvLihhsooFYWvKqmamCtPjnKKufAiM9JQQ+Y2QaP+VW3o/8mMUk7wIvToHjll/Qv0cTqfdzTCH2nD7ClS2OPxoqkGh8sAMkYowHiPXjVcu3x9NTbujQoRHm0bW1bTv6S1bCZ3odJMQdRyBXBFLC70MYzDdphA6N6wg7z0FcHZE3b+JC+AvcfRFH25zlfJNzTSrLU2EVPzme+vQJSdBIoe214t4hgXZ9eRJGVNtEy62vz0zyzzsVnUbwSjyfTbD55AAkTpZ4Cf34uVsRMNkaSbFJUNP5sE8eY8/JIv8hUkoHYvZhLjn4PDYeUcOhiHiBtvvNpeUw97oHI5GSJFH+lyNQQAQ0yjfD9NnNsseifSlaj52O1tl9832lsIqfmck25shA1RqWMDQ0RAVTM/j4eBNzbzq1tp3yDcAnBZN9qX8uGY/XJK76/LhSprVQOqAz6huvQLs2RIF9JlCg87Kg7cG44wgUFwQUbj3+g4AHqG1ZO1/4FUQ2twQTaT+5ZBUD4qArYGtNg31vggIRHpUIPbNqqGzyYVuq3O7D/TgC3xoBhVN8tiz38ePHeX6jlwHIpvTWqFEDZhXNZF78yBHgCEgRUDjF50+OI8ARKDoCvONZdAx5ChwBhUNA4Qb3OAOPwr1jPMPFEAGFU3zOwFMM3yKeJYVDQOFMfc7Ao3DvGM9wMURA4RSfYSjPvsPOOQNPMXyzeJaKNQIKqfg52XfYdYEYeOg7u5+nCyyFNfOWcNpwUTI3v1g/Kp45jgDwpRh4FK6Pn9vDl2fgyczMFKi3U1NToampCVMz04+ihF/+Ez+OXIKV/15HS9FDjG3dEb9q+2LTAMuPZLkHR6C4IPAxA08z1CvkzsUK2eKzB1EUBp4X53YC030wqnVd1GzSD3/NNYcnbYed03EGnpyI8Ov/EgHOwMPQLwIDT/Np/oid0Vx4hmxRzf+caT59i+xc/SyQM/AIEPE/xQEBzsAjeQpFYuBhLL2gfv5+FxjW7Izy847AtaP5x4+XM/B8jAn3+U8Q4Aw8UtiLwsAjzozA37aV4XRmJA7ffoX2NQzyfJicgSdPaHjAN0SAM/BIwS4KA8/djf8jpZ8Mv7BFaGmqCrZ1d1yChE+LM/B8w7eZ3ypfCHwNBh6FHdwTGHhGN0YZbcbA8z6LgadqJbGUgScPTInG6NqRwxTohobly6B0mbLCyH+3tTeECAIDz8wbApOuJAUJA4+WtimGbiYGnjV5M/AweRkDz85ejaCnXxlbEtuRL2fgkWDJ/xYGgZwMPLUsa6GOVVs0MmE8UBIGnoKmq3Cr8/zv+KN+g/rEqxeCd9FRSIqPgZqGFm76+eFVWHAWA8/vk6ZBJltQUGTyV9xsMJoqiNwYeGQyOY9ssHDR6icYOGvkBwaeDvfg/84dnIwjJ1r8+r9CQGG/43MGnv/qleH3LQkIKFyLXxBWnYLI5vYwOQNPbqhwv5KAgMIpPmfgKQmvHS/Df42Awin+fw0Yvz9HoCQgoLCj+iUBfF4GjsB/hYDCDe5xBp7/6lXh9y1JCCic4nMGnpL0+vGy/FcIKJypzxl4/qtXhd+3JCGgcIrPwFd0Bp6kxKSS9A7xsiggAgqp+EVm4PmGDyrGbzlEIldEZ4qRmRIEZ0sRShs1wtV3Gd8wF/xWJQUBzsAj9yQLysAjF/Wrn2qW74TDx5Shq6SE5EAfuAVOgH/EYmE671e/Ob9BiUKAM/DQ4ywKA8/bW+5wXOaJ9VMsIbJ0Q/DDnbC1X4+4TMl78mC/E0auoq22aUHPNkdHrN7gQq22SPi57L+b68sUdp3SkMrYjhwBWxsH+L/PQHLMPWzefw3xcXfxq5UjxV2N+k1G4SaFcccRKAgCnIGHoVUEBh4Qm4n7zJHYhSm4emQYRDEh8Dkcl/UM3j88imsxqcJ1rL87pniowe/lazygfe+XDHbAzbjsSpsRcRX2rceg1o5riIoMgp3mbvj43hX22U17/wqHN0VCVbs2/uduT2lOxtUTC2Cpp5J1P37CEfgsApyBRwJRkRh4kEKJTMa+xUNRv4oRlNQ0suOuYZR1nUJUfLMWj0WtMnowa9QC1hSSJlm6nyXz7sU5+GIuZvaqB5GWMfrPOw3G55Mmpj9s5SQ5MXH+VK5Rh850UaWCCTQLuAGvkAj/890iwBl4pI++KAw8QhLmutCEnPbJMW9JdVXuJZNqelqanF/ep+K0eATmEpyjvshFgntxBHJHgDPwSHEpCgOPkIS8ZjJ9DnyJ0NhUxIddxVpnXxjlMAJyPg5xyiscdd+Bq8Hx0K/YiIKd8bf3A6SlRmDntB50rQc1uXpFiJ+/eiPnrfj1d44AZ+CRewEKzcAjS0OuhTf4oRfmttlEjDz6MK7WFrtJRq+URFB6kMXKOmYmvYaT41hci0z5POuOuSQVVS0dCH2ArFT4CUfg8whwBh7CSMaq8zUYeNjEGjV1TRAJb4EcZ90pEFxcuBggUMBXvBjkWJqFr8HAoynSLFQBS5nWQumAzqhvvALt2gA+Z4inf8dNTrVVKDR5pG+BgMKtxy8Iq05BZIsMNu3H9yYoEOFRidAzq4bKJlpFTpInwBH4WggonOJzBp6v9SrwdL8nBBRO8b+nh8PLyhH4Wggo5CKdrwUGT5cj8L0goHCDe8zUj42NRXq6ZDqMEi1+Yav1dHV1UaFCBSgp5/x4/r08Sl5OjkD+EVA4xWdKX6lypWwlDA0NxZOnT5CSkoIqVapw5c+GDr/gCHyMgMKZ+qylV1FRyfarWLEijI2NkZGZgWfPniE952T6j8vNfTgC3zUCCqf47GnlxsDDTP7q1atDWUUZgYGBSElmC3E+7xJpw8yIN9FI+tx0Wvpcl5TIZ9t/HlEuoQgIKKTiyxh4vKlf/7iHg9DH19DQACPiNDAwQHpGOu2tF4zMDOkC+1yeROb7h3DtJoKRmSkqm5uitJ4I9kuPI4mtqCPn60Zr9WedF86Tnx2DjZYuMefMxEBac+9yOlTwl/0J2DWS1vWvQpgc244srKhHtn+fzUrfoibD45cQBL4UA49CKn7OZyhj4GEtfUhICOLj4xH+JhxhYWE5RYVrccYruJRvCFftubTOPhKxMW9x7+xW3J31M/pvuCPImHZag+P9awvnz06vg++IbXibsAjDJwFLNl7IqiDEmdE47uqJdlN+hJHAttNHYNvJ9caF9IySUAMUMjaPVlIQ+JiBp/AWaIlQfGbms35+vXr1UL9+fVhZWaFatWrC6H9uDz3IeyXtgWsHv62/0zp7LaiqaaJqk37496AbaqXFCVtkv7t3DPv9whBzzx2NJ/oAm4eiEbH01O67CvBajztSBp3k0PNwDjSHQ4c6WWw7zGpgFcI/zvZS5h5LLDxAzD3E6LNrhA0WnpQsDXx1Zjksu7kiiCwTJr+qmw3cb73NlmW1UnoIdJ4MOxsJA5Ct874spqBsgvyixCPAGXjkHnHw2W04TuY3+wV0HSeEsME/ExOTrE9+cuLC6ev71wDbdqhciuo96ruHBPjjJm2/nWTaHqO6Vhdk3r86itMhCdC17A13O/KasA2nVtijnGUnTCDaDc9LLwW5+4e3AG2moGU5VcjYdljAhQU/Ysit5ngQ8R5BN+Zj56Cm2PtCDIsGwLwtV4W4/gdmIPCMK26EZiAj8hqczujB2kJfCMv5Z8j6lwh7dBoit6Fwv5G9csgpy69LIAJfmIFH4T7n5XykFVsPheW/awVvpvzoCuGaWQGsC5C7I1odC2MJC444Dde2zYLLdcAoyge+gTMQGj+doklYeJSUDWFR2xrmyRVQwUSX/HXRb3E72LhdwNKu+jji5AOHA2uEtBKzGDzicNebWnWdYBzYuFTIQlX6O2f3bdwc8hswbQ+exjfH2bPWGEmVysnLgWhmeAKwG4z6OtkpudJSYmA+fSG61CxDlZQ2WtBy4niB1EtIlv/5ThDIycATrgdExdzF/fB2aFb+M+QRuWCk8IqfS5k+62Vk3hYYvAtPZ7ahFXSa6LvEC30pVvhpJ1RxLEVsWdknAeUc8G/QYzjgtAWnrqpSl8EWV1uUy/WePVpboW51PUFNa2zZAKXK1aFhqoIZ5gPhsb8xbpgPwKaJKujh6oVDOI2po1mF8wlH1kn+vlV8Ig0epJAIcAaeL/DYqvX8ncz13ag/dBmeRiUI5v5LYslt253670Z5UW98uLGaaTssb+ODvu3HwHzSkI9aaSUi9apYFzgckIL67Tujk01tXB8+Bv5pSjS5yBjdpvTAknEzodexCarUaoG6Xs5w8qqL/o2NKS9JuHFwJw7ekHQlPtyVn32vCHAGni/05JVVKmNxmB9mxDujfsUyRJCpi1qtF2LQX7NgrUMkmUSNyax2Gf2Wlk55qeEvzYCyDjqMdRAuJvZrkj1XxLbDiDW7L/LHjIjxqKyvBW3j2jg/wR1jm5cVZGu0Hgyy2GHbwozmHVRGJ1u6mGAv4dqnVv3CzDGYeS1CkM3qPQhXwOerJakgP5QYBDgDDz1KGQMPe6qsT5+zjy9/LS+b11uQGBuNZLLlNQ0NvwrzbTqx+qRRNaIp+i57VXnBzv3/YwQU+m3snJiYDb6c19kC87gQ6RqChgS/mlMlVh+FBvmrIcMT/i8RULjv+GzWXn5dQWTzmyaX4wiUBATyr0XFpLRs+a2Pt0+e3+hl2WRKX6NGDdklP3IEOAJyCHAGHjkw+ClH4HtBQOFM/e/lwfBycgS+JgIKZ+pzBp6v+TrwtL8XBBRO8TkDz/fyavJyfk0EFM7U5ww8X/N14Gl/LwgonOKzB8MZeL6X15OX82shoJCKL2PgkT+WVAaer/XgebqKiQBn4JF7biWdgUeuqPz0O0aAM/DkePglmYHHb4MTnP5eDTtalyCin+OybVg/1VbC7GM5At7P43KgwS9LKgKcgYeebB/Roqzfyr5Hsp2XJAaezJSHWDX1Ikbee4kHRBnmPnMczplNRnhkENyb7EaPrbdK6nvOyyWPwBdm4FHIPr4Mj5+6WuKfxGm48G8A5M9ZRZBvBh5aO8cYeIb+bxZ+6Vcf9S3dESsw9+Rg4NGTMPAoqVQQGHjciYEnjXjyBAaeX9tJVvZlraGVMvBAwsCz0/sRZAw8dXoSA4+XFzHwBEkZeKwFBp7Xtz/FwOOI9lXLwKyhNdi/ScNaQFfLWMIMVCrrpjJY+LEEIpCTgacSMfAgkTHwFI6aReG+43+JZ6qwDDxpEi4g2X4hOZmBvgQ2PI3iiQBn4PkCz4Uz8HwBEHkS3wwBzsDzhaBWZAYeZuHJ3EfMQLIAfixRCHAGHnqcMlYdNrjH+vWO+7oLA3u5nctkP/UWcAaeT6HDw0oqAgq3LDc/yix7WAWRlcXhR47A94CAwo3qF4RVpyCy38PD5mXkCMgQULhRfc7AI3t0/MgRKDwCCmfqF76oPCZHgCMgQ0DhTH1ZxvmRI8ARKDwCCmfqcwaewj9sHpMjIENA4RSfM/DIHh0/cgQKj4DCmfqcgafwD5vH5AjIEFA4xWcZ/5IMPDIg+JEj8D0hoJCKL2Pe8abNNR73cAC7LigDD3vISc8PCuvaR+4KKPIzz4i7mbVmnq2bZz/LblNw/vG7z6bt62YDy/lXPitXUIGU1zex9+ANJIkLEDMzDqssRVjj97YAkbiooiGgkIqfE+SCMvDI4l/eukI49XTdg1cZBdEOWQrZj2wnv6l7riE0MAhP7tNuvM0eo/MPFbD3UWx2wRxXX2uVXVKYN4YN9M5xt89fsoWeKXzHv88DpcASJULxC8rAw55XRpw/Vi71hceNcxgZ6Ia9vtGSx0gt3i4HW9ja28FS2nLbu3ohLlMSx8HGBnYjpQw4IkssPHo36/HH0JlemQowLGsM0yq1MGD6AWyzA4Z53BBkMiL94dzNUsKeI7LDwfvSe2alQPfIQ0ac8gpbs5h3bDHCzgaO224KMd/dO4YR1EpLLA0buF8OQuy9nWjx4zwKd0XpOg7wj8uAmPgD/nG2l8pR3g98yLtcFlCKqAhm/D4WNtLyu+zPXU4+Dj9XLAQUXvGDz24TtstmW2YHdB0noP85Bh4m9PzkSviYL0Z3y8YYMtcaM1acRLq00X971wc+h8tg2/MwPL99GAmudvjtwBOKlYaXvr64p9kbT1+Hw+/gKMzr1xR7nyUJ95X8Sf9wrqSKCrXNgQN3EJXxBotaNcOdjn/hzfu3uLajEgY2noynKVSjSJ04MyJPmQurBmD83w3g9zISz3b0w24vX/hHppIyR2BBkz5QmnMVibR78FX3anBs74F0y/7Y5W5PKU/G1RMzUF1bBRcW/Ight5rjQcR7BN2Yj52DWN4/tkbUWX6i6mLdy9d4cMoNSwY74CZVHNyVHAQUXvErth4Ktj02+7FKQKb8n2LgYS2f12xPoG4sTnl7IyCWFrt6rcflSKnSRpHJfnIGGpXTR7ka7bFizyh4zj6JOKoYYmCONfMGoYKeLmp1nAjPEcDqY/c/8UYwJp9SUI0NwalAOg25jo1L18L7MassduOf2xFZcTNjg3OXuRMEX2dfzDrjiFpltFDeahCOTzdHVDKgpGyMaU/8MdIoAttXL8TC9VQua12o0b/KNepQ2rqoUsEEmuK8WYGyMiA9iaPyz9o0lu6lB7NGLYjzh6o8ufospzy/VjwEFO47/peAOO7JMTiTEjr0ScON0z5kn1uhHZZg6cHbsBldU7hFKbUP0IhEhuT3geJIXUUpKxtaBtQ4xrJeutBO0vFDPFC3we+IL8yHL4QOWQvMtW5aH9U10qAkrgmP9S1hVkkbqZeEIECch4yZCOfIcJB3aSlUgFJAZkoQFlWvj2N2MzB/SHv8z/E1vJwleRWf2oSiAAAurElEQVR0NUe8Hq2tULe6npCbGls2QKlydflk5c6lmi5l/ZEL4KclAAGFb/EL8wwubRoDjPDE4jkucFm8GC7TXeBGZrHPxL0IEpPpTcoyz2k9nsZkIvP9QyztvgTWY22gQ/quh0BMW3lU6PNH3NsL26XAxB6W1DlnYSASzFeIfRuBkBf+WO/YFE6+5vizrxWUdSuiMYXfjy2Njp174UfawXvm2NVI09DMKkKeMpplULsL5Wkky1Mqwm7tFO5blaKKE1/jGKXw5+xJ6PlTNYTeOS2klwQyT1g9EvgGoW8TkK6kiYp1gcMBKajfvjM62dTG9eFj4J+mBDZ+cNR9B64Gx2flhZ+UbAS+O8Vng3rrVgMrR7TM9mSrdh5FJu1qHLvzHmCM1VG7UL+cNrTLN8Rq28XYNrZhlnyU93SU1RahcpNh6DHvCIbV0YOShhYqkcSq/k1hYlYZNeo0w8qoLjh8+xK6VNIAI+l0vvUPIse3JaJMEcrW64Num5ahmYEKGeWAkQaZ7Z+Q6bzoKZY3YXnSR7WWe8lCIaeuBmW9GphiZ44+tQyhpW2KHWGk3YHO2HTlDfQt22Ck+Wo0rNQFvu+V0H2RP2ZEjEdlfS1oG9fG+QnuGNu8LDKTXsPJcSyuRUosBTIkuCvhCCjc6jx5cg02oMf6+Jb/rhUeU85redl8P0cyz93qloXK9hBMtBIhjr7R6WhJWmX2rb5N2UlY+uYMGqmkIgma0BTlO2WJoDgdSUlpUFPXpPkHecTNKUPXF1fPxz2LQRjfsZowoLe0bmU8nHMHm/pITPX0xCRq4CX5SU+gmkukA1WyUHJzElk1ynteGcgtFvcrSQgo9JNnA3ryLue1fFhBzln3OS2V7GQyj3W05GKmp8EXUZKBLh1SMrmgfJ/SSP9nFS6nDF1XaaCHjh3qYXUbauvP+FCHYwL8qBKQOVURVSTSC1UtHZl3rkd52VwFuGeJR0DhWvyA+wGwrEN96ny4gsjKJxf7JhpqxoYSrnz5AHESoiPS6Du9rrzvNztPi43A0xevkSbSRXUL84/z981ywm+k6AgonOKzZbmPHz8GW6zzKcem8daoUQNmFc0+JcbDOALfJQIKp/jf5VPiheYIfGEEvrtR/S+MH0+OI6CQCMjGgxQm85yBR2EeFc9oMUZA4RSfM/AU47eJZ01hEFA4U58z8CjMu8UzWowRUDjFZ1hyBp5i/EbxrCkEAgqp+DIGHvkjZ+D5+H0rFAPPx8lwnxKIgEIqfs7nwBl4ciIiuS4sA0/uqXHfkoRAiVB8zsDzBRl4aK3CNkdHrN7gksXos3z3HkzpJuURHOGGp/G0gpE7hUZAYRWfbZMt+63seyTbOWfgKRoDT6y/O6Z4acOfZkmeWF4NM0YMh/m0B4h4eRVtdjvDQ448RKHf/u848wqr+OyZ/dTVEv8kTsOFfwOynbOKgDPwFJ6BJ4Ux8MwZBguj0qjfiLH4zMXg5pWhbVQd1YmroBRbR8ydQiOgcN/xvwTanIEnHww8Uq6tbCsiaHnwBx6iL/EkeBr/FQIK3eIXFjTOwFMABh4JG1hhoebxiikC353icwaeAjLwqBEfD5n3giNeACPZeTF9oXm28oeAwq3Ok7HqsIE91sd33NddGNjL7Vwmmz8opFKcgadAcHFhxURAYfv4bFBP5vI6l4UX9MgZeAqKGJdXNAQUrsUvCKtOQWTlHxxn4JFHg5+XRAQUTvE5A09JfA15mb41Agqn+N8aIH4/jkBJROC7G9UviQ+Rl4kjUFAEFG5wjzPwFPQRc3mOwMcIKJzicwaejx8i9+EIFBQBhTP1OQNPQR8xl+cIfIyAwik+K4JCMfDQ/PboNxGIfvvxPvQfPw7uwxH4NggopOLLmHe8dXXxuIcD7UGnivwy8GSmPMUI2nPP5XRoNoQDdo2EyHIVzrlZQjTrfLawwl5E3KLddLV0YWpeGaZmJrS+3RZ7b0UUNjnaGjcJNw7uxc2Qgu9q6+tmA8v5V2hf7TisshFh4bXwQuXj7bXlENmsF3YLLlQCPFKxQEAhFT8ncgVh4FEuZYEBk4AlGy8giXaSZk6cGY3jrp5oN+VH1Oi0Bsf715YEFOFv8stjqNxyGMosP4LQyBjERIbiyGItDGtZGd5h2da8FeguFwYOw9HQ5ALFYcLya23YstsiuajUPDfkLFK6PPI3Q6BEKH5BGXis+60EvNbjzvsMAejk0PNwDjSHQ4c6eHfvGPb7hQn+GZH+cO5GFgBZCCKRHQ7ejxZazF0jbLDwJO2sSe7VmeWw7OaKoIxMoQJZ1c0G7kRUcfLPPoDdNqwf0xaGWmpQ0zJE2wkbsMd1FtJiaTdb6gL4ebrAUkhbBBtitnn4XsJs47fBCS4bVsNOGmbrvI9a2CTsm9oJznTPJW0rYuRWf7y95Q7HZZ5YP4XyaOmG6My0PNMUMpvLH2aVyO5jaecqyYPAwjMVe/51F/K38JKcdcAW7QQ6Ybi9jQSXbs5Z+c4lee5VTBFQeMUPPrsNbHts9gvoOk6A+XMMPLq1O9Nes77wvPRSkL9/eAvQZgpallPF+1dHcTokQdiKelGrZrjT8S+8ef8W13ZUwsDGk/E0TQsWDYB5W64Kcf0PzEDgGVfcCM1ARuQ1OJ3RQ6Nq6nh6FhjVq2H2llFZB90n/oEuNQ0QevZP/DhyCSZ638XrYH/0iXBGw0EbBRM6M+Uhlvx2EkNuPUfYo9MQuQ2F+41EtP99KUbSXR12XMTC7hZUeaTCfeZI7MIUXD0yDInn3PJMU8hsjj/pEefRmqySn07dRcz7ULiY7ULDX3aD2SOx/n9jeN8d+OPfyxj5Q9kcMYGaA1ch6vVTLIcb+rhf+yicexRvBBRe8Su2Hgq2PTb7sUpApvyfYuBRUqmAfovbwd3tAtLIzD/i5AOHX9tJd581Ep5YZmwwTrFGPeQ6Ni5dC+/HSXSxG/9Qa16n529kMXgR91wQzp61xkg7a5y8HIjXt09QKz8YDbRUQO0iEuJYnOwuNvwVohPECL6yE5h0HKNaVIOekQXGbT5M21/vwv2YDKSlxMB8+jSqIMpB36wBWtBS2GQy1vVNLAUGHP0KlWBcWkQJM1qMydi3eCjqVzH6ZJrZcyG5inlxi7bbBl7e8ILb0q14olSVyuUKX8oD7QYOhwMeGNT6BxhrKclFZ/eci0ld60GkVwFWHaxZ5rhTMAQU7jv+l8K3QY/hgNMWnLqqSm2WLa62KJc9abGkV9y6aX1U10iDkrgmPNa3hFklbWiUbYEZ5gPhsb8xbpgPwKaJKujh6oVDOI2po6cDtG7dpAng6fMA6+0ts1p9ccYrzKhigdInX6AD3c1cnsNKTZ2WvefS+ZZnvZE/l+XWXBea+KCY+UpTFlc42qFp3TpQT6AyqtXE1rpiVBQp4zKF6etrZJPM7SItNTdf7lfcEVD4Fr+wAKuZtsPyNj7o234MzCcNQX0dlWxJKetWRGPyuR9bGh0798KPNYCZY1cjTYPUTNkY3ab0wJJxM6HXsQmq1GqBul7OcPKqi/6NjUnxNdFx6gYyEIbi9+0XEJeajsSECHgtpEoC7dCrQRmUq98NgQv+wLFHkUijsL2zOiPQfDhq6H3+kbx+9QpJUmosocmW5rygaeqVo0KRFZNQug669uwKi8zzGLboITSoOWAWCwSjH3h9/RjcD17PGgwVgvgfhUbgu23xQf3tDmMdyLxehYn9qHmWOsYjaUQNHesOON/6BwOt2kJ3vCTQYdNFNDOQVBA1Wg+mFvowbFuYQVlFhE62ZCWb2cNCW6K4ujUH4cHRWHTt1gnukqEHSsQWHjdWSiqZbi7YP2MEfraqJEnc3A7Hj/8KQ2Ul5OSyZEoo2B+U5/ZTR6HZ4Gbwn+6DA50pgLoBMmf+mTRZuZhj6anQXVQrdcHNvbPQqGU1jBFCrLH10j6UVpJYEHoiSU4CL06B45Zf0L+HFCe5e+bMq5AM/1PsEVC41XnyrDpsQI/18S3/XSsAnfNaXrbQT4LM66SkNKipa9J8gUKkQvFjo2OpG6wKQ0PdLLM/K6W0JLChAB1dzSyvIp8UNM10KmMqlVGTyvih11DkbPAEii8ChXmVi01p2ICevMt5LR9W6HPqr2uKigATxdctbQjdvDKgpgmdL91sFjRNqtE0C1Wr5VUo7l/cEfh8h7KYlYDN0suvK4hsftPkchyBkoBA/rWomJRWl6bp+nj7gC3W+ZRjSl+jBhu84o4jwBHIiYDC9fFzFoBfcwQ4AgVHQPXRo0cFj8VjcAQ4AgqNgMKZ+pyBR6HfN575YoKAwik+Y+A5feZ0NvhSU1NhYmKCZk2boUqVKjTBhn+TygYQv+AI5EBA4RSfDeopK2f/GMHW4j979gza2trIzMyEubk5VNUUrmg5Hg2/5Ah8PQQUUjvY6rvcXEREBDIyJEttK1asiFIakomnucl+Kz9xZjoiw6OgrF4KRkYG3+q2/D4cgU8ikL3p/KRo8Qlkip/zx+i4kpOTERwcDN+bvsIxk9bI53Sx0Q/Qy8oKk3cRG42c+3eFPaysnLB5khWsRm+SCyn86f3T29CqUWN06tYFHTq0pfRtsO30/UInmJGehFM7t+HyAwlfQEES2j2lMax+3Y601Fg4NbTCzEO+BYnOZf9DBLw9V2LOnDn0W4jrz14JObl38YDUbw4OX35Q4NwppOLnLCVj4GEVQVRUFKKjo3H//n1cuXoFYWEfK4iuYW10akhT9LcRA0+6xDpISY7C6e2PYdinCZr3XYiFI3/KeYsCXwff/gdDpvyF8j//D6fOXsKls6fg2E0ff00ZAq+A1wVOTxbhxLK/cPBRwePLz3pIE8tS40eFQEDymlJWU/H0ueSdDn0elJX1jMwsgSy/z52UCMVna+8NDQ1hamoKMzMzMDM/Pj4ebCAwN/eT/TAgch+uBROjDrnwB944R0fHHs3w0tcLey5JPnFGB93A2FZkAZCFYGXVCZ4Xnwgt5p+9G2PmjkssKm7snQ+rVg54FhcPVoFMb9MYK0/dwYHFCwCzAdjxxxAY6RGDj54RBs7cAceeXZBKsqwLcGT1ZGnaVmjcewruhL4X0jy8aAImL3FFJ+G+Vmg3/i9EJ8di5RgbIZ9n5o+G/ZLDuH9qJUbMWgnnYSx/vyMiKSHPNIWEc/nDrBLZfaw6OQh5YFaB28hx2OSxUsjfzP0frIMH3uth7zgbv3aU4NJ44BT8TfmVYGSF+R4Xc7kL9/pSCIQFhSEjPQWvw4nFqQhOYRV/3boTkP3OrPfPds4G/5jpn9fsvkqNe6IuxNjhc0+A7voBMu11eqJ9DWO8CbqKO0HvkJwYDufev+B5y19x7vIFzBtdFX/+z4nIN0ifawLHdkoV/8ABoqu5jMuPoxEVeA4n3mvCmhh2gp8ADbpaQVXuC4Oaui6GOc9Hn6YWuL7XBbM3ncGwOX/jmNdOtH57GiMGLkUsLZZJiX+MM7tPYdSa7Ti4fSlUr23DGmIF6TNtOapTjpuNno3lQ1vRQGYy7vy7FSeUf8a67Y54cXhhnmnm9o68eUosP2SVtJm9EpcunsJAk8sYMXIdMsQZiLxzHauXbsPYWUvwa5v/t3clADVmbfhpr9smURElSghZsmSLiLFlzIQMY8sMxmSZDIMRP8qWMQvmRwy/MdYZw5isMQyi1EhDthQqbVJabvv93/N93etW96aydfkO3Xu+s5/nu+857znfeZ+vjSx7UXEmbp3/Axbj1nJts4wOxrYzdfH7yWAsHGeP39buRVoeI+sQ3MtCoIQmCUCERg0NIU5JRXJaHFIJYsumjWtchcoKPutxc7UGmDr1PdyWPCrjZwMBc2wJoMiJDKwweFBdXN10Hrk0S58KSofzBFcyVNGgJwb8fmdOSgxCWOakKHy7/BuExJIJHe7jl3O34OwxmzSGv3Aj5Tau3FZHyyaaOHY+GjEhQTQqDIWThQlnWivOZXnKurSHD5CWmY/b5yltx+mYMbQbLBq1wqzNS4CsIITTrF+QT5pKNy8aIFqjUYuucKQi8koK0LBpBzAjXpMGVrAwNyatoYCunHB4vQ86t25SaZmUsIJLiuZn8vvhJ+DvvxHxmnWpX/tw4SFpQgSds/d3mDK8HyxMSu15qQS+zt7wGdWLaxsbiAZN+wBWpiawb+5AV9rQLvfUpULFQkANENCAtW0z4nx8jOvRN8naUwTrRqY1KIfPopK7+jXurVzGbh940bT9Xxw6ZY4rMMN/B5Rl1i3hhAro7dwe9mQ+p6bWCvZNe6JpK0uYN2qMbliDbbt+wY06Q/Dt53Xx+eoTCMJVuI6bQoOHFurTYHzyTDSKZgySzfq52Q/w+bD30Wj+j2jL2iLHwKOuyZ5AVByoSohAk9niMwM+eT9dljoDiGjAkrkqlClLy3ms0aNde2jmFUGtXSu0dSpEExMRV6eJiX7ZpHJXhfTYVJNS8W3jdxCK5eIF78tGoBgNm9hBdO4qLtIfdKxhql9z8VXpGf9FoDVvPRiDDbOwxncTTZpD0bkhzXZyTt+sGVrT9fXHOhju4YkOTYB1m9ejQFMLuiIL9BvZGKd3HoZRt7Zo1b4XzFLO4ESKGca62kNDUw9D50whvr5f8Ok3e/BUnIfMJ0nYusADt2GIkd3tYOXoDFz8DgcuRSOH4n5aOJ9q6402DY3kWqHYm5gYD3E+m+3LuuqWWY+tWUiLeWrYBCM+GgGTjDP4YXMYRNqMpoM5XqD/PXUA3+8Ikm2GclGKPuR3EBXFC2EvgEAJNPTqoD6bH8jpmdWnAZ/31+TzBbLWpLrak4ett/uOdcafP4ZggqeLrGEMEE09dbDlwOKNCzDxM3903rOKi3eeuBh9mtbn/B0GfAzs84d7r+YwNGyGbhT8u8V7aG1mzMXb95yCDQsyMd1/DXr/soYLA2kWX373DTfIFE8MwLRoT/h/Nga0DUjOGit2zCH2Hx2aScs6qbk+a3Ofj9phceBiuNzMxJb3yqbr+ZwyWb+YY+XpqmvDsr0H1nhfxZfzvLBpHotRw8w1O1BPh1ftjQz4X1nEUX9sP+OGCaPdWKIyTkvukKR2HTZopaOAtAHBvTwE1LnDaKRbaejCspEJ7sc8gZWNFTRLHnCVaKjLaXxVrFYtIiKion5ZxcxvIhlj1bkcepnbzGNrfNcpjkr9XTp3gWM7tkKuuWO773l5jIFHlxh45H7lVSyS5c9Iz0B+sTrq1TeRqf3S7MX5YuSIi2FUx0Aa9MLf1S1TQqch8xgDD52AlN+MfOGGCAXUWgRUVvCrgujLEPyq1COkERBQNQRUbo1fHVad6qRVtRsntFdA4EUQKL+cfJGyXktexsDT1Kap0mf00kYwoWdpBScgICBQEQGVU/UrdkEIERAQEKguAgL1VnURE9ILCLwFCKicqi8w8LwFvzqhC28cAZUTfGZ4Y93Eugxw8fHxuH3nNmeW26xZM4GBpww6woWAQEUEVE7wmeENM8HNj+go6405nUQwodPLmZJjHBOPwMAjg0bwCAgoREDlBJ/1glneFZAprn5n3hiHhd26dQsOzZsjJiYGsbGxnGlubWDgYW0TnIBAbUNA5Z7jMwD55/Pq3Dfzsz/Gu5eVlQUTExMUFRcpZeBh+YuzrsCT3rvnsvwUu5Q5SUkKAlzIdn7ID8iq5NQpy+8icsDZJy9+OD3/0RXsOxj60t5Ey7fNBSFPXo/JzOuuT3azBM8LIaCSgi/tcV78CuSG1oP4vh9pARrcTP/w4UOOhCMpOUkhA480L3vrXph/IKLlJDzr+gn4MkvVLGkqxd/qOlZYemgL2uhX/4x0+RLFiScxYczJ8sEvfC16ie/grLQxpH0JTvUQUGnB1200H2rmsyFJXof6kl1o27YtHB0d0bxwAmxtbZUy8Dy7TcS2c+G+7PL8/7bI/JynJAuH/bwgIu2A/bl8vgkJ+RJI8h/jyPcH8TC/BOkRP2PG4s3w83Tg0w3xRXRGRXUhPzXyWRqRC9YdicbTqJ/RvecyqsoPpq29EZlVTPbuKdjtO1pWp5ffYaSXSEhLicTcGWvx6455FOeCo6c3wIE0ExbHXN79ILg7eONmrgTGCMOiicNLy3DAiiPXuDTsIzFiHzwd+P6IHCYhKCqVj1PS1/L1XnqSj783szawMhyw4JuDSKMaBadaCKi04DOomdBrtzzOfT+DXp3j2VfGwMPSZdK76n/8cTJWrzjCqfVMZV21Afhu2yIgjehNyMWfWQ5PPxHCEzOQlRiCZttmY0toMlnN5yA0OBS5pOlLJE8RuGYW1MfuRlrKHaxDADwCL3H55T+u7fgIftkzEJeRgztnPsbCkVNxo9EI/BI4mpLNQcixhWhuoIFg/z7wCtBDcNQD3P/nEHL8PDFhyxVKU4ibgYvw8bYSHL3wE3q274J6p+fht9tE2kEuYv8qnOrSDy1EvCFRjOkHuPMoCeEHJ2PZyK7Yd1eMosSzcOsxAfozjiE+KQ4HJqXBows/4Cjra/l660WswIBZR7D9/F2kPvod9S+uRizVL2+lxzVI+KjVCKi84LMZvyB6ADfz56celIHNePiUMfDwiXLh0N8L7mHzcCqpEIlnfkSY6xS4taLZi/2SyVl2nYerF8fj4Zl9WOW/EnsozLjCL5wNEkvx+aC2ZMpriQ79O9H0y3KXdXXsRxDD52z0GTcXRxMbI/zWYXQ10UETe2b1T8eQLS2gJ8nCVf9YeP/hD+dm9VDf3g0Bv3nj1OyzyKKJPRM2OLR/BVzaN4WBiRMW+RBP4NawUi0hDAGzenOVsnQbl42FpbERWg6Yjd2TgA1B/yLjwUXq2hys+aQn6hqZYeDsQLo6jKDrqZX2Vb7elJD9gM9GjOzQEPrGdpi5cRfVmQmBwJODXmU+VF7w9awXytT94thPIC/8ld+FTHoG2BrTptvg2237sXftbnjP7k8W8/xsz/LePbYK7bqNR3iaHvqPm4HpFJangCVHvp7CivwYXLTNwK/x6N4NbBjliFt7v0BH+24IupvHU13YyJdAJAvaz6519fnFeqEaST7qwUBu4Ok+fjtJ9CFcuHgAW0mEPVo/s03Q1nhmQqxvQkrMU8aVw1wpkwPn1+SvSHOpvK9l67WRY/lR03155sRck4SP14KAygs+Q4kJv6hzGjRstkCn/vAqA8eEtNuUxbTJN5k29TwxuXddFErlg0pJjT4CTF+DLyd/iKZIImotcs95Pbd85Y8uByHw4GVux/7gWCM0WBuJLu+PxaotB+BJc2/oI2LVZfXFJiP+cQ6K1PTQikaX1VO3Ijo1B9m0L7BqwGrYLO2GukSSUd7pNR2Ida5bibN/DkYHjoJZKbGnMZX91ff8EiYlah/c1wKzhznAoIEjFeGH7/+MQlGhGOF7l9BVJ/R2qF/lvlo5jUCs/3ycJDIISUk69i2dRWUaC6p++ZtTy69V8jm+FNPMi22kXtl33h1fmf+5Hnripdm0H5aSdv7H0PGw01DHY5apdAZu5jYbNn08YERrf9j0g7srsKz/DkxO7s8VLZt85WZs+T3u2L+/xIyfpmLUsC4Y+s1ReNoOhCkri1ynSRuxsrs56uS4wsvGGR2tQxGccBrvLY7E0oeOdO3HpbPxXIUT3s5EqR7OXZf5UDfEsK8WYfbpY5g8sEWZKJxcAHN/tn8ADFv2Bya0Noam2iBE7lsER1rzr+ZibBBw5E84m2gg+Tl95ZLTR6P+Ptg9JwLD2ljyJbj2k0YJ3yqEgMoZ6TAGHsaqw4TeuFuUQqilcdK0ChNVNVBSBLG4EHrs+Rj5s+g5oOELkByKc+hZIc3ses8hTCuidGLoPbeusB/c4fKPF3K3DavQoyJi+aWWU13lolg/sqh0Q0MaDOTiqtHXqrZPrnTBW4sQeOtm/JeOrZrmMyElv6H+i9Wgp29YpQI0KV2lKenx2yZ3c5rtgV1RexWWqUmDlcIbzPphpKD0avT1ue1T2CIhsLYgoPB3UVsap6gd/Kk9WlUqme3l80jTyoe9NX5S89//PhwDRFZoYvG6Tuu8Nei98x1ROVWfmeWyc/mVPaNnd5UJvb29PRpbNX7nb7IAgIBAeQRUTvDLd0C4FhAQEKg+Am/F47zqd1vIISDwbiMgCP67ff+F3r+jCKjM5t5/r9zHlXR6oqZWghI6xaYDde5I7jBLTQxqJazj39Hfr9DtGiKgMoJ/Jb0Y9kSrzQ660TF8MKM0dvg0KO0x7JIzYGdep4YQCNkEBN49BFRmc2/S8Vju9U6FdHRVl15/XcItUtSgQX52jl2LTuFJ6PXMEs1iFBeoE+8ejQxq6tCmc+h2demdcJ2t3r27K/RYQEAJAioz42eKSYItrFBYQm9yJf6LQhJ0HRJ+knt6SSN7fEc9pDDu9fZ0yKaAwtm7G/Up8FHyA8yUA4CZ4Lqa+2AlHZFlx1UFV0UEJGKE/v4H1J0GwamxYJxTRdRqZTKVEXwNTXWoE8km/UfwpQSScHUyDCHJZ1ZoxTTrS+h97aT/9+nUkF1yy4BiSiuBBg0Awh7my/r1nRszAdnBDwTBf1mAvqFyVEYiigpLiEtPjQSa1Hsdbbg7N8Rg5wYY2NUCg7o3wLBeDaFO5qISspzRogPohfRHCj/UJGq0GUhTvxLHGHS8fNcTO46UZScAe+QYZtYdv8vnVMJQwyITL/8M91KWHnevSXB3IXKLDFI/yIXvXgKH0rjRfgc40g9JQQoO+Mmx7Kw9WoHjj5FmeBLDTeDlZK6cyB0ziAswAAk0qjGWnu1z3WUsOPM2/81z9ilpo7L6lIUrbrcY++e+B1+KXN3XCl7bI1FZfq7RwketRUBlBD+f9HY2ubNXgdN/FNNFAc3w6vSnScKgXkjXRLLJlvY0PkCP/lh65ihIqWMMOrsD5kI0MRyJN4OJZccXk043xZ2UNJwL7IqFw/dy9FbKGGqKU0Iwus+naLnzEtJS4+Cptwenwq5xm5BJ51egp9dNbLyZgNT74WjkNw6z9lxHetQujPOT4Nz9J3gScw45iz7E+tC0Mm3UbOiC+RvbYkaf+Th+JhDO0wKxPeBTWFKnghf3wWfr7XEuJhEJUd/i0qwBWHI6XiljkLL6lIUrbvc9uH2xFl7USu+df2PFULsq9aNMp4SLWoOAyqj6TNqZmq9Nf/RAj1vcs3mcFAGO8EaNFvuaOho4fTUF+WQzr0MDgltnS5DdCfIqpYfhGXSm9m9JdmxitLehzcBZH8LSQAQDjh2nGFqkOfBsPPcQR2w8B0P+5Nh4/Ei7eHLvL2K4W4ojw4mBh4bRUcuC4bftK46R5t6lY9RCY1z89SdcZLfcFdg9+SiWXWtFlr8L0av3ePjNGomZobfQyaEeS1HGOY7fiR1XHDF88B7M/e06RrYgog2a1a+ujcXc4z5wasCeZLjhaFIcsmGA+hqMMahiG/WN7RXWVxSjODx0reJ2r8n+DM0Jn2xLa5iZipD3RHH+Mp0QLmolAioz42sW8NO3Ngm6rpoGToal4MSVRzgUlsB9B/+TAn1SBzy7mGN8j4Yc974GGcfTOMFt9D0P/SKmFpBZKs+/QxuJ5PhPzvschho+DfuUFGYTDYacc+8FJ4cWaEF2A72nbcf2/X1hZt0fYSSsFzaMQsmd/ejb2R4Lj9yRy8R7mTaSFMeXFhEeUyZeR+vZmC2mR5qZtJupjEVHt4ni+pSFcxUpaLcRbZTy+PBNqTR/mdYKF7UNAZUR/DxuticePZp9hzibwbObBcb1sISI1vvj6XuEswU+dDLj1PpCetDPdvv1iJGGce8VVbLGr/SGsEMDpU4ZG08dKydK4Yv1J2+gkNbuP3/F7OJ5RpoG9l2Bwzdg0r4vhg90RdFf/8F//nmKe4emoJ7Fehg4DYPPys0IdAd+CE2kUYN2zQ/+jIOh97laz30zHPNil+Lfm0eR6eeOJcdoECBbfrtJRAiyfDfH+JufGIKJrTtiV3SWUhad278rrk9ZuLJ2S4eaRwkJEBcWQVn+UsiEr1qMgPRe1uIm8k0rLiYFn4apIpr4tWgqJiJq8jC/hGZmop+mMEaHz2n1NEjQFhit/Wm2Z35a/1fqbJ7F6pDGLZV3zTpks26TQdcSKGPjmZK9AHdOBBD9lROWUTGd3PvRJ08+aTP4a+xeOAa9rIn0jjmb6Qi50AN2erZY5dkfjmYBsvBz62iQkBTg3Nef4qcpZ9FL8yQG+qbhQPTnaGqli8C93nD8YAL6xAVjyPIQTB/mDDuTeVz+fnN2wKe7BXK1FTMGffpkqcL67OoqboeNeQeF7WYbLG5zJ8P5Y2dELjiFv75UXC7fKeGzNiOgMgd4XHdHEyOtPbRI+CX0x/bMuZN7pPIX0fSuTksAFlZCMs429XTocd+gjvWJCBu4d+cO/vKwf/H7oIChRuvxBazccBtjFnnBzkAdyefXwaZ/FCKfBMKOHTQgxzPhaD0j9ChtCQtnxxMMjWpmTy9+moUijXIsPQraKGUMUlZfZeGFNLo+ly3oBftRCofw9RoRUJkZv7GpDuyN+ZlbjSS8iFR+LTqx5+NqDh0KZmtPLVICmPBTFJvykUcXeUzVNyDV4GU4BQw1Er2WML0+kGbvb9HPFTh1muixd16RCT2rVhkTDgtXwINT5ZbqVZNFR1l9lYVX5QeiLH+VOyIkfO0IqMyMP+3odUTTu+o0aBNLjY7nFWvSsV06tKNBT+vZET4m2gVFJdyanu3+59OaQJstA9SLYWukgcAhrV8duDTLJtMmXFJaLowb2xIjzgvyc726lgolCwhwCKiM4Kc/Tkd+vvyectXvoLa2NkzrmVY9g5BSQOAtR0BlBP8tvw9C9wQEXisC/O7Ta61SqExAQEDgTSNQlb2bN93GMvUzss2nT5/KyDbZc3pGrGlkZARLSzqpV/o2mTKZhAsBAQGBMgionOAzobduYl2mE/Hx8bh95zby8vLQrFkzQfjLoCNcCAhUREDlBJ/RamvQtn1+REdZb8zp0Z0JndjPlBzD3bt3YWNjA025I62yhIJHQEBAgENA5QSftVpLSwsFpOLrd46U3UbGte/QvDliYmIQGxsLKysr6OjKvxlWllQlPLn0FCOP3oNjVNeo7GuuVKL1QiNrOwIqubnHvyFHnVvbMz/709XVpffBZcHExITs9ovw4MEDlNAxX0XucfhGsmV3R2QWd9xHUZJXGvb40jqIXDZVsMFnlWY9OAtvBxHqNW6ERo0tYKTvgn0RKa+0PS+j8LAAB4gWneWKCgtwgcNyzh7xZRQtlPEKEFBJwS+Pg4SO7DItgM30Dx8+RHZ2NpKSk5CYSIYvSl0mcuXN75Sme0URaQUVZ3Iyud3+8UCcHrQDcamZyMyIx4EFwIQeX+FOvuJB7BW1rtrFNnpvI46OasXl42wddF/Saclqt0TIUBUEVF7wc0IHoDD9OKfaN8ubD0dHRzQvnABbW1tu978yEGSvuZZL9CQqCJNoxhVxrDkuCLwQx8VGbvLC6E1X+JRkRbff2x0bwx+jOCsSc738sVnGqOOOg/8SDzg5pUw5WrQEiZ2HiaNd+HqG+CI6gxfs/DSga/vmMNPXgpZ2XQxcsB8/r+nDWw7RCcFLO5aUtk0Ed+9NnIUes9HfMWMu9v4ZyLH9rDifhJSIfcTgw/fDwdNPVn5xaiR8h9DszMV5ytoaTqxDSzZvkOVx991fQSORFCcggPJ6bQrh+pce9TNcSHM6+SAPDLdfw/mBVkvHGLG+y4iJqGL9XEbh440joPKCr2boiOKwDyA+bgC1gielgKrDwsJC9sivqigzQfXv4gG1/4QgNzcXIYG2mOG2i2Pgycm6hGupBXxRJID3t55CZiGb2wpxc/dyHIEn4lOTcGydPsaM2sUJjTKmHGl7Woz5AWmP7mAdAuAReInohQwxaOVcIutw5gRztPdi7DoaB7dpH3MGQPGnl8N12mpsPx+N1EeR6HJ6Nuy+DuaKexq5HhNH7MT8Py9gotUt9OkxAb1OXOO0hiWNf0HHqXuIsSgFK3s74+qA75Cc8RiXdlpjTOc5nDZRkh+N1bOOY1xEDMdEJAoYj8DQx9Kmct9qGpaYtGI+ds/ui8ATRzCny6ewDVwBN7IezEg4guCHzCRK6mIwcnU0HhHz0MRsP3T84lcyppLGCd9vGgGV3NyTB03UcjXEceuhl0Iz5rhn60r2fJ8tAarj1NTN8NXtSNy6G4f/bViBoH27yc52FdkBMKufcgw5Ns9KzkQnrJ0xBHX1NeDo1Jlmc3a0WDlTDkkaxS+Fz2CetadD/07AU768VkOXICf1M9y4Honw86ewZURvfEqDSnDcFkhC9gM+RzGygzWXeGFoMj7JLu0jaQrev+3C2D6NwPYQYinF/dDDCPibWSw2I14AP1x5aIsTFGH88DK2rL1G+Igp1R4c+McfLvmZsFmwAoNaNCBVpQ66U/+yZQbKfNvYZ902YxG5MwqO74+Ejc8BXP/IoTRSDh8qCz4bMbYL386ZG3fBt8VPuPrdB3AyJEMKwb1xBFR+xs8944ASE2fkuQWi8FdR9QAt9xssyY/DyuaO+OR/oTB06IuZMyYDaQrsA8hKr/zzAuKl4Fz5bQNFTDnlG1lYqkiwZcMkh0m4pmEKh85uGPfFKvyVHYc5JJzHb6Vy2WyIUFTqCsSP8SiTz8xaWaeOrjSKvj3RtU1rtG1pj/YuU7F902o0FvGbmX26OsLe0QYtHd/Drk3b4WZtIJePvKTRKOi1LE1a4gPOH3vuBkf+KYuQ88i3U023LsUQR0F5cOTSC97Xi4DKC75a0ynQ7xoM3QYfobh7YLXQS0lIQXpyClJK/54+foQgKmHNYh+838sW8Vd5NVrMbHyRhth7CZwKHxe6i5hxiAKM0wQUV6lGDH7KmHIU5yBrYm0auGL34KNFe5GQmcstVR6E/YVfKYMxbV5aOPZFrP9KnH2QxTHcbvqwFZx3XueK4wciXrKMG9hT2B7kmLbG4PcHw67kLCasjIaorhVIH8G/T00xYOBw9KRkX0/ZgELdSvgAyrECMb6BvvMScfTmv1ia5gu7JUe5+st8sDU+tTPo5hPa50jHwaUDiW/wI7SrU26kLZNJuHidCKi0qp95sQ2HVUHCFhlm+fdWyPzKPFr69WBDFJkeHUgFlnNrzkXhS08beLRkMxTQbzRxYsX6YuvFsZg9kuztWwyD+Z7xFCPV85XAR9HE/6OUKafgH7kiyCudw9V17PBd1CHMdB8Guw2kbZQ67x9Pw7uLKTQlfgicPgQDW5jzMZ3mINynJ/n5tbWxiC9J03oQruxbBKcetrRMYK4T7Qvsh6mGGXwjDmBMh74w+oyLgPfWv7mXioTxl7JPNpBwu/M0+0tZgdxbZmBm/4Xw3hsJF6um6HyYVPg2Hlgx4Db6Ufp6pQoHnbCgq0R82cESHlyJ7jRQjOeYj7lL4eONI6By1nmRVyPh2M4RTOiNu0UpBFAaJ02rMFElgTxjjh4xzxDhR04WIDLkH72REIjFxEmjp1fxUVwl5SlkyqkkPYtiecTEI6ZHB3gYVbi8Y20SF2s+n7mHTjmKCxS0V9oPbeqHkrFLvr4a+1k9WVS/YfXwqnF9QsYqI/Aqb3uVG1HThNIZv6b5leVjjDJSYDT1DZ8lk2fgeRb6XJ9Cppzn5GJ5lCngrE1yrVJeEkm1niLJrmE/lFekJIbVYyRFUkkaIfiNIKByd4U/tUdrXiWzvTyK0rTyYYJfQEBAgOjgVA0EZn576uSp5z6jZ0JvT+ScghMQEBCoiIDKrfErdkEIERAQEKguAir/OK+6HRbSCwgICNAhUQEEAQEBgXcPAZVZ49+KXI78nFDuDhXTATQtOgvC3qZTp74HrO3Ys3XBCQgICFQVAZUR/JzMy3DsSifo6JXY3KtyikhZIW79hFt/4Elqe5jUb1vVPgvpBATeeQRUZnMv/Kw70WmxV2ayF2dK6EUa8qda1OjF2SyUzsvRq7PyC0qgralOGgG9YIP+6Yjawb7d0oo3u1CM9HQxtAyMIH3NVMVEQoiAwNuHwP8BHmqwPTmzca0AAAAASUVORK5CYII=" alt="" />

GifView代码:

/**
 *  调用结束就开始播放动画,如果需要用户指定何时播放的话,只需要把timer的开始放到合适的位置。通过对CFDictonaryRaf 也就是gifProperties的改变,我们还可以控制动画是否循环播放以及循环多少次停止。
 
    通过对index的改变也可以控制动画从某帧开始播放。同理,同时改变index和count的话,也可以控制从某帧到某帧的播放。
    注意:- (void)stopGif;之后才可以退出这个类。否则timer不会关闭,产生内存泄露。
 */

#import <UIKit/UIKit.h>
#import <ImageIO/ImageIO.h>

@interface GifView : UIView {
    CGImageSourceRef gif; // 保存gif动画
    NSDictionary *gifProperties;  // 保存gif动画属性
    size_t index;// gif动画播放开始的帧序号
    size_t count;// gif动画的总帧数
    NSTimer *timer;// 播放gif动画所使用的timer
}

- (id)initWithFrame:(CGRect)frame filePath:(NSString *)_filePath;
- (id)initWithFrame:(CGRect)frame data:(NSData *)_data;
- (void)stopGif;
#import "GifView.h"
#import <QuartzCore/QuartzCore.h>

@implementation GifView


- (id)initWithFrame:(CGRect)frame filePath:(NSString *)_filePath{
    
    self = [super initWithFrame:frame];
    if (self) {
        
        gifProperties = [NSDictionary dictionaryWithObject:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:0] forKey:(NSString *)kCGImagePropertyGIFLoopCount]
                                                     forKey:(NSString *)kCGImagePropertyGIFDictionary];
        gif = CGImageSourceCreateWithURL((CFURLRef)[NSURL fileURLWithPath:_filePath], (CFDictionaryRef)gifProperties);
        count =CGImageSourceGetCount(gif);
        timer = [NSTimer scheduledTimerWithTimeInterval:0.12 target:self selector:@selector(play) userInfo:nil repeats:YES];
        [timer fire];
    }
    return self;
}

- (id)initWithFrame:(CGRect)frame data:(NSData *)_data{
    
    self = [super initWithFrame:frame];
    if (self) {
        
        gifProperties = [NSDictionary dictionaryWithObject:[NSDictionary dictionaryWithObject:[NSNumber numberWithInt:0] forKey:(NSString *)kCGImagePropertyGIFLoopCount]
                                                     forKey:(NSString *)kCGImagePropertyGIFDictionary];
        //        gif = CGImageSourceCreateWithURL((CFURLRef)[NSURL fileURLWithPath:_filePath], (CFDictionaryRef)gifProperties);
        gif = CGImageSourceCreateWithData((CFDataRef)_data, (CFDictionaryRef)gifProperties);
        count =CGImageSourceGetCount(gif);
        timer = [NSTimer scheduledTimerWithTimeInterval:0.12 target:self selector:@selector(play) userInfo:nil repeats:YES];
        [timer fire];
    }
    return self;
}

-(void)play
{
    index ++;
    index = index%count;
    CGImageRef ref = CGImageSourceCreateImageAtIndex(gif, index, (CFDictionaryRef)gifProperties);
    self.layer.contents = (__bridge id)ref;
    CFRelease(ref);
}
-(void)removeFromSuperview
{
    NSLog(@"removeFromSuperview");
    [timer invalidate];
    timer = nil;
    [super removeFromSuperview];
}
- (void)dealloc {
    NSLog(@"dealloc");
    CFRelease(gif);
}
- (void)stopGif
{
    [timer invalidate];
    timer = nil;
}

加载Gif的三种方式:(从网络或者本地)

- (NSData *)loadDataForIndex:(NSInteger)index {
    NSData *data = nil;
    if (index == 0) {
        //网络
        data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://s14.sinaimg.cn/mw690/005APVsyzy6MFOsVFfv5d&690"]];
    }else {
        //本地
        data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"run" ofType:@"gif"]];
    }
    return data;
}

1.GifView

    //第三方GifView(实现gif动画播放是通过将动画文件读取到CGImageSourceRef,然后用NSTimer来播放的。)
    
    //- (id)initWithFrame:(CGRect)frame filePath:(NSString *)_filePath;
    GifView *dataView = [[GifView alloc] initWithFrame:CGRectMake(0, 0, 100, 100) data:data];
    [self.view addSubview:dataView];
//    [dataView stopGif];

2.webView(不会出现内存问题)

    //webView
    UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 120, 100, 100)];
    webView.backgroundColor = [UIColor redColor];
    webView.scalesPageToFit = YES;
    [webView loadData:data MIMEType:@"image/gif" textEncodingName:nil baseURL:nil];
    [self.view addSubview:webView];

3.帧动画

- (void)runGIFForImage {
    UIImageView *gifImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 240, 100, 100)];
    NSArray *gifArray = [NSArray arrayWithObjects:[UIImage imageNamed:@"1"],
                         [UIImage imageNamed:@"2"],
                         [UIImage imageNamed:@"3"],
                         [UIImage imageNamed:@"4"],
                         [UIImage imageNamed:@"5"],
                         [UIImage imageNamed:@"6"],
                         [UIImage imageNamed:@"7"],
                         [UIImage imageNamed:@"8"],
                         [UIImage imageNamed:@"9"],
                         [UIImage imageNamed:@"10"],
                         [UIImage imageNamed:@"11"],
                         [UIImage imageNamed:@"12"],
                         [UIImage imageNamed:@"13"],
                         [UIImage imageNamed:@"14"],
                         [UIImage imageNamed:@"15"],
                         [UIImage imageNamed:@"16"],
                         [UIImage imageNamed:@"17"],
                         [UIImage imageNamed:@"18"],
                         [UIImage imageNamed:@"19"],
                         [UIImage imageNamed:@"20"],
                         [UIImage imageNamed:@"21"],
                         [UIImage imageNamed:@"22"],nil];
    gifImageView.animationImages = gifArray; //画图片数组
    gifImageView.animationDuration = 5; //执行一次完整动画所需的时长
    gifImageView.animationRepeatCount = 999;  //动画重复次数
    [gifImageView startAnimating];
    [self.view addSubview:gifImageView];
}

 

发表评论
用户名: 匿名