星空网 > 软件开发 > 操作系统

iOS学习42即时通信之XMPP1

1. 即时通信

 1> 概述

  即时通讯(Instant Messaging)是目前Internet上最为流行的通讯方式,各种各样的即时通讯软件也层出不穷,服务提供商也提供了越来越丰富的通讯服务功能。

  即时通讯有多种实现方式,例如:XMPP、环信、融云等。

 2> XMPP(可扩展消息处理现场协议)

  XMPP(可扩展消息处理现场协议))是基于可扩展标记语言(

 3> XMPP的优点

  • 开放

  XMPP协议是由JSF开源社区组织开发的,不属于任何的机构和个人,从根本上保证了其开放性。

  • 标准

  互联网工程工作组将XMPP于2002年正式列为认可的实时通讯及Presence技术。

  XMPP 协议虽然是基于Client/Server 架构,但是XMPP协议本身并没有这样的限制。网络的架构和电子邮件十分相似,但没有结合任何特定的网络架构,适用范围非常广泛。

  • XMPP 协议具有良好的扩展性

  基于

  • XMPP 具有很好的弹性

  XMPP 除了可用在即时通信的应用程序,还能用在网络管理、内容供稿、协同工具、档案共享、游戏、远端系统监控等。

  • 安全性

  XMPP在Client-to-Server通信和Server-to-Server通信中都使用TLS (Transport Layer Security)协议作为通信通道的加密方法,保证通信的安全。

  XMPP环境的搭建的步骤详见XMPP环境的搭建

2. 工程中添加XMPP

  将XMPP协议第三方文件拖入工程,下载地址:https://github.com/AlonerOwl/XMPPFramework

iOS学习42即时通信之XMPP1images/loading.gif' data-original="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAJuCAYAAABG5aWCAAAKqGlDQ1BJQ0MgUHJvZmlsZQAASImVlgdUU1kax+97L73QAqFICb0JUgQCSK+hCNLBRkiAhBJDIDS7MqjAiCIiAjZklKLgoAJiQyxYGATsdYIMCuo6WLChsg9Yws7u2d2zX87N9ztf7vu/797ce84fAEo3WyhMgeUASBVkiEJ83BlR0TEMvATAQA2QgCKgsznpQrfg4ACAxkz+a3y8C6DJfMtsUuvff/+vIc+NT+cAAAWjHMdN56SifAIdzRyhKAMAhIfWdbMyhJNchLKiCG0Q5f2TnDjNJyY5bpqvTs0JC/FA+TEABAqbLUoEgDyM1hmZnERUh0JA2ULA5QtQZqLszOGxuShnozw3NXXFJNegbBT3TzqJf9GMk2qy2YlSnl7LVBA8+enCFHbO/7kd/ztSU8Qz79BBB4Un8g1BMwnds9rkFf5SFsQtDJphPndq/hTzxL7hM8xJ94iZYS7b03+GxcnhbjPMFs0+y89ghc2waEWIVF+QsjBAqh/PknJ8ulfoDCfwvVkznMsLi5zhTH7EwhlOTw71n53jIa2LxCHSnhNE3tI1pqbP9sZhz74rgxfmO9tDlLQfbrynl7QuCJfOF2a4SzWFKcGz/af4SOvpmaHSZzPQAzbDSWy/4FmdYOn+ACv0YwdsAbrSjPjsjMlGPVYIc0T8RF4Gww29KfEMloBjPpdhZWFpC8DkvZv+W9/Tp+4TRL8+WxP1AmD/AT1/ybO15csAaEHQ446frenVAiBHBOD0aY5YlDldw0x+YdGuZNH7rAo0gS4wAmZod7bAEbgCL+AHgkAYiAbLAAfwQCoQgSywCqwH+aAQbAM7QQXYBw6CWnAUNINWcAZcAFfADdAL7oBHQAKGwCswCj6CcQiC8BAVokGqkBakD5lCVhATcoa8oAAoBIqGYqFESACJoVXQRqgQKoEqoANQHfQrdAq6AF2D+qAH0AA0Ar2DvsIITIEVYQ3YAJ4HM2E32B8Og5fCiXAanAvnwVvhcrgaPgK3wBfgG/AdWAK/gscQgJAROqKNmCFMxAMJQmKQBESErEEKkDKkGmlE2pEu5BYiQV4jXzA4DA3DwJhhHDG+mHAMB5OGWYMpwlRgajEtmEuYW5gBzCjmB5aKVceaYh2wLGwUNhGbhc3HlmEPYU9iL2PvYIewH3E4HB1niLPD+eKicUm4lbgi3B5cE64D14cbxI3h8XhVvCneCR+EZ+Mz8Pn43fgj+PP4fvwQ/jOBTNAiWBG8CTEEAWEDoYxQTzhH6Ce8IIwT5Yj6RAdiEJFLzCEWE2uI7cSbxCHiOEmeZEhyIoWRkkjrSeWkRtJl0mPSezKZrEO2Jy8i88nryOXkY+Sr5AHyF4oCxYTiQVlCEVO2Ug5TOigPKO+pVKoB1ZUaQ82gbqXWUS9Sn1I/y9BkzGVYMlyZtTKVMi0y/TJvZImy+rJusstkc2XLZI/L3pR9LUeUM5DzkGPLrZGrlDsld09uTJ4mbykfJJ8qXyRfL39NflgBr2Cg4KXAVchTOKhwUWGQhtB0aR40Dm0jrYZ2mTakiFM0VGQpJikWKh5V7FEcVVJQmq8UoZStVKl0VklCR+gGdBY9hV5Mb6bfpX9V1lB2U45X3qLcqNyv/ElljoqrSrxKgUqTyh2Vr6oMVS/VZNXtqq2qT9QwaiZqi9Sy1PaqXVZ7PUdxjuMczpyCOc1zHqrD6ibqIeor1Q+qd6uPaWhq+GgINXZrXNR4rUnXdNVM0izVPKc5okXTctbia5Vqndd6yVBiuDFSGOWMS4xRbXVtX22x9gHtHu1xHUOdcJ0NOk06T3RJukzdBN1S3U7dUT0tvUC9VXoNeg/1ifpMfZ7+Lv0u/U8GhgaRBpsMWg2GDVUMWYa5hg2Gj42oRi5GaUbVRreNccZM42TjPca9JrCJjQnPpNLkpilsamvKN91j2jcXO9d+rmBu9dx7ZhQzN7NMswazAXO6eYD5BvNW8zfz9ObFzNs+r2veDwsbixSLGotHlgqWfpYbLNst31mZWHGsKq1uW1Otva3XWrdZv51vOj9+/t75921oNoE2m2w6bb7b2tmKbBttR+z07GLtquzuMRWZwcwi5lV7rL27/Vr7M/ZfHGwdMhyaHf50NHNMdqx3HF5guCB+Qc2CQScdJ7bTASeJM8M51nm/s8RF24XtUu3yzFXXlet6yPWFm7FbktsRtzfuFu4i95PunzwcPFZ7dHginj6eBZ49Xgpe4V4VXk+9dbwTvRu8R31sfFb6dPhiff19t/veY2mwOKw61qifnd9qv0v+FP9Q/wr/ZwEmAaKA9kA40C9wR+DjhfoLBQtbg0AQK2hH0JNgw+C04NOLcIuCF1Uueh5iGbIqpCuUFro8tD70Y5h7WHHYo3CjcHF4Z4RsxJKIuohPkZ6RJZGSqHlRq6NuRKtF86PbYvAxETGHYsYWey3euXhoic2S/CV3lxouzV56bZnaspRlZ5fLLmcvPx6LjY2MrY/9xg5iV7PH4lhxVXGjHA/OLs4rriu3lDsS7xRfEv8iwSmhJGE40SlxR+IIz4VXxnvN9+BX8N8m+SbtS/qUHJR8OHkiJTKlKZWQGpt6SqAgSBZcWqG5IntFn9BUmC+UpDmk7UwbFfmLDqVD6UvT2zIUUYPTLTYS/yQeyHTOrMz8nBWRdTxbPluQ3Z1jkrMl50Wud+4vKzErOSs7V2mvWr9qYLXb6gNroDVxazrX6q7NWzu0zmdd7XrS+uT1v22w2FCy4cPGyI3teRp56/IGf/L5qSFfJl+Uf2+T46Z9mzGb+Zt7tlhv2b3lRwG34HqhRWFZ4bciTtH1ny1/Lv95YmvC1p5i2+K923DbBNvubnfZXlsiX5JbMrgjcEdLKaO0oPTDzuU7r5XNL9u3i7RLvEtSHlDetltv97bd3yp4FXcq3SubqtSrtlR92sPd07/XdW/jPo19hfu+7ufvv3/A50BLtUF12UHcwcyDz2siarp+Yf5Sd0jtUOGh74cFhyW1IbWX6uzq6urV64sb4AZxw8iRJUd6j3oebWs0azzQRG8qPAaOiY+9/DX217vN/s2dx5nHG0/on6g6STtZ0AK15LSMtvJaJW3RbX2n/E51tju2nzxtfvrwGe0zlWeVzhafI53LOzdxPvf8WIew4/WFxAuDncs7H12Munj70qJLPZf9L1+94n3lYpdb1/mrTlfPXHO4duo683rrDdsbLd023Sd/s/ntZI9tT8tNu5ttvfa97X0L+s71u/RfuOV568pt1u0bdxbe6bsbfvf+vSX3JPe594cfpDx4+zDz4fijdY+xjwueyD0pe6r+tPp349+bJLaSswOeA93PQp89GuQMvvoj/Y9vQ3nPqc/LXmi9qBu2Gj4z4j3S+3Lxy6FXwlfjr/P/Jv+3qjdGb0786fpn92jU6NBb0duJd0XvVd8f/jD/Q+dY8NjTj6kfxz8VfFb9XPuF+aXra+TXF+NZ3/Dfyr8bf2//4f/j8UTqxISQLWJPWQHULQA4IQGAd4cBoEYDQEN9BUlm2hdPBTTt5acI/Cee9s5TgTqXmg4AJm1PAJr3ugKgj2bZdQBM2qIwVwBbW0vHPyI9wdpqWouCukvs54mJ9xoA4NsB+C6amBjfMzHxHfXfyAMAOtKm/fiUhRlELW/m5AJ6N4euA/8Sfwe9OgDgJ2fptgAAAgVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjYyMjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xNDQwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiJo1dkAAEAASURBVHgB7F0JgE5V+//Nvg/DjGHsu2QplKUktCkhKXuJmKIspYT4Ci0k2xdfFIlSPulvSbTYiqJQiGTJPnZjFrOP+T/POffc5V1mhlTj6xzmnnOe9ZzfOe997/vcc8/1Wb58eR500ghoBDQCGgGNgEZAI6AR0AhoBDQCGgGNgEZAI6AR0AhoBDQCGgGNwFVGwN8vMNbNpI+Pj6SpzMih6qLgAxajo5A1c6VrWDVtUd1eFprKLvPYjq1uqLOSWfRUcHALDKUr6Tw4RPOsmijZ6kpQaJhiVJOCZg4StNSsspLjtquya27psp50omSknieaEw1Djb2YDLsNSbR4ppDHghxbJ8uVZq97Kkus1ZjLXNHYsqVjyTjpauwVX0wQMmFYUQVHXfKslpMXe8Ves+j2EkFkoG1RPdAsvK1xZQU75mos2aKTLiRNmuJZNi15J0/RPemzb2t8SZLdsmcWNn2JCtcFUdWMXIq6EFU1X6YSErk1Xg5yvjxXHVVXuX2+KKu+vhfQtm1bVdW5RkAjoBHQCGgENAIaAY2ARkAjoBHQCGgENAIaAY1AEUFg1qxZ6Nq1q2iNbxFpk26GRkAjoBHQCGgENAIaAY2ARkAjoBHQCGgENAIaAY2ARkAjoBHQCPyPIeB/pf1RC5NPnz6JtIsXkZubK1dEE8PPzx9hYeGIji5lrnpW8lfqT+tpBDQCGgGNgEZAI6AR0AhoBDQCGgGNgEZAI6AR0AhoBDQCGgGNwLWFgJcAND9ub9u6wNEng26IXLyYisXB9RwSfuePocaZI2iQlYm4uPLw9fUVWwA4g9BkII9s2c15csvbCphNMQumP7XFgA/riuQuozjGxgNWlUuObQsEwclnEd6wwLSvVBRB5UpNtciqc8nmRjGYKsqeeTaxAoqWvtUWSbPqBZhwYVMfaGyc4yX74EqTiuTHHEv26W0M7DxvZYmK3QL3RfqVOubR9OnSfEfV5oeKXCs4OaVkzaJZeCt7Fq8g26623OUZe3eqKyU/GTVfPZkxaWbBsOxadzjMl+mQ5Io1Xm6sfHnu0vnb8iSvaRoBjYBGQCOgEdAIaAQ0AhoBjYBGQCOgEdAIaAQ0AkULAY8BaA43+YhQnQwDyjoRjTgUx/04cdCXVz6HRITjjdtKSSIf86rgUnYmju7cgePHj6BMmXLw9/en4FOeuSJaiJFBHzOIyGEzCnoaPhwxTJOmCoYrW1UVZbuZbw9hGvKUKTlBsUXxJJ2ONgH7nrrSggjtmcZs6s6goWFD6VsmVXDRaYcN5uamITXdH5FhjJPpwixLmmTY+VLSUrB4Fs1VxrLuLOXmpuPQgVOoWL0i/Cniy7asgDPbs9O4L1aQWnINT0JPUZSeGntFZ1l7WeoKmpoTZgNIzk7jsRXDK+mSZZTJjGAZwy898JGTQZSVAo8WlpaonSZGUZkmEcmTBGvsqW7IiEyVjYrSMciWI1JSvlxz06DpkynuFpQxNx/eRZWKkdusuuhY88JFRVRV2635YUkxz53udm4gf/abDqKHHvQsu7qkEdAIaAQ0AhoBjYBGQCOgEdAIaAQ0AhoBjYBGQCNQFBHwGIAWsSyO1XHQychV/E90QtGNHgUERlKwyA/Dv08zlIDkY3uxqk8zfLvhRxw8dAyxsWUQGBhk2TR0hSnTngp4kVOTZghyxjSV8nJw/nwS4BeIksUjFNUmYhd2CTyqiB5pJZ3aiw1bT+DWO5si0j/AsmOTYaOqZdKBqkkfKtgopAy3SkIYFDRFkfmhHxZh5Lj5yAoMRGZmOBo2icLOQ6UxoEMIJs27iE8+eBZ+RsD0/MmfMarfv3A6KNAMSrLdzMw8dBjyEnq1qC3dGL6dQDFL+RZi4sA2hz75LzTqMxL9294sPGVmnsP0YYPQ7KW30Kl+eZKzAs57vvsIYyf8H7IDfZCNcnjl7eew8fUXsOJQOnyygQeeeZnacb0tYC19MYzuwUpuqGVbylAbzQAjt5eClGxCiooeGBRBtMuawWlDWKjwwUjW3LURFdNLbh9+hacbzWZOFu1HpSUdiBEQbDUWKleN5JxoSkaaEjRDwsxUO0wR5hgVQ92oOiSkvgeSQ1dVlDdP8uzORncfX0tZjBNXHR9B7qenILSnuSJ9qWA06+mkEdAIaAQ0AhoBjYBGQCOgEdAIaAQ0AhoBjYBGQCNw7SAg98bgaJL6c4SubFEmD30SXNK75BNIXB/KA0SZ86DAUPx2MhlB5aogqnQ0Tp06gUuXLpF19kXipuk8nD2xBd3bdcf3h88YXvKQnZ2E17u1w4wvd8hydyp/tVPw9/+wDL07PIjevXuj96M98PDTE3E6I8PQdcmEL/Zp+zO9AAd/XoGZb/8be88km4pWQJlIpCfazFzRZqNG9F83foJu7dsj/s2lQpddMK070yYaNMmxustmKHj+7apNaNHvRbw6ohdRUnBH5wFolvct3pyxBcPGdMSi18fiq13HWBrFS9XB6JnT8dZbb1l/M95Cu+uCkXjRtd+ikaQnk631sv3Mpr8SsTfgpdHx+Hr2K5ix/CusW/U5Nmz6FaVigI8mvIuv1n6Fzz9fgV1HzgnoMlNOIrvqXXj7nfG4HklIz8ql4H0e4kePQ8faITiVYt18YAeMhXTImCwSmPSbuEQ0ys5TMoJhR4mEZE/oKAuUq4Jh26wa/kRdEk2WEiWCgyYdejw63KhWOJRV/6S6aKmhJMRc2q56YjTFaogUVh7ybYtjTipJu0+iySY6GuoGmVJVOdtV/5QFxTMMmlVZYPvuPrgpRnPc5IV9p4qw4UnHskFapo5ZMHxz3U5zcamrGgGNgEZAI6AR0AhoBDQCGgGNgEZAI6AR0AhoBDQCRQYBfxXGOXroF6SmJnptWHhECVSsWte2kJE1aRUrHXNzZPApN8dYnUiRo4zcQDy5eB+JUIA6C6ibl42goNMoVao06Uhdc7sNgyKcS5Yo5pBe5iVaXku0nEwuZ9Gq37OY/8q7CGjWBfMGdcLFhO14dfBYPDWlEv47rJPQK8yB3bDh+ncNxqLm/REYwkF0pkiOqDhqdk4e1n80Bm9+vBXhAdy4XKHFtElEC7PRbFE0ARJbp9c0omGrJhg3YSy+JEJeySaIzMlB9VsbYM2irXjnlWdwPuQWzKwaLZtBxyVvjsCKgzmIDPETNA4cJicn4a475aptGayz2i5LRt0ik66snDuyC8dRAwvnz8OeHRuweMUP8A0LQnpwJC6d2Y/vNwXj0sVM5MTWxPUVSopuBIcVR7Hw0ggLlvctgCBExZRAdmgIThot5XbYV8QyJpMXEk60cppxkv5dV7FysFGuiOV++SgD3FQhKgviaHMg60pGNYBz4pCeuYraYDGZdS43SWwtLbsNMSsMgswU11mTvi2eVSK7RkX6YSyUL7OgCCZPcWSuatKWqqmcle1lWSeKK5EZnNzobgRPQlLVWKGshlAQJUeMMRctHtu1VsJLx65zQyiLflt6knYtHLPT0vBBs8bo8f0PCAgJuRaarNuoEdAIaAQ0AhoBjYBGQCOgEdAIaAQ0AhoBjYBG4KoiYG7BEVumClL2brUFhyw/HBArXbaqIMiQEYWKqKACQjkcI6Y655zKhtGhXFkcu1iOwks+mNTCH88tO4yLF3+yxZg4dGdsqsBGqcaZURT2VN3MqXDx/FEcpbxunZqIDApAZOVGeG7cC0jI5T2o83Bw6+d4fcxMCohSICu8JkaNG4obK0TgnRGDcaxEBfz+3Q9IJcm6d/bCS/3bI+nkVrz62rcY/eZTCEEaFk0Zg4XfUuCcbFW4+UGMe64rLiX+hnHPTkFgeV/88ssJ3D3gZVRPjcBTr05F+opRmH9RRuCzBW0a0la8iA+YJntjHrkfTOO9li8kpyKLCDWaNUMUgbf4o4+QR1uA3H777Tiwbh0u1AgHaJVxRu457N2bgFsefR7NhL4f7aftSyvNs/DFtJfx+959+LWUL8JLl0e5knIrEulHuBIa6iARlrVzCb/ijQnzUfu+/hjX517UbXqvYPy2ZgYmfVcGo1/oKIK4SpfD3jzGZpJxcAQEUDhdxMANgugtBxFZmLbrSA3HgFemIWPlKAMTtiB5nKvAs0Vzlqw5QjpqwomGkA9xB4NyYc42n5QLtk863JorSR5XHbMz9kfJyGxlyVN0iZesKZpN3WZBjYwpJXgKb5ULR+rgFDXaouywEAm4yFiqdoaiGrlg5cN3EXevsq49qGyXyI9nyXF/5VBTf8ytOojIwe3LGMxu3bpZRgtZWrBgQSElCycWEBqKqAoV8dUzg3H3WzPg56c+J4XT/2dKZSMjOwDB1o5IfwMM2Th7KhVRsVF0u1AnjYBGQCOgEdAIaAQ0AhoBjYBGQCOgEdAIaAT+CAJmADowKBTRMeVw7ixv++BMMbEVaPVyqAwAMUsFgTieRCkrWwacsigAXTHiEh6uRMuVKX10IAhHUni1rA/SgssiN2WLoJuBMQogcoBRJGGLD4ZRzjkSpapSCsVj66Bp3SB8NvNl/PRFfbRp3QLNb2mKJiVDaQX3QbxJwecq3Ybg350aY8mUwRjz/GzMeb8fEo+dxI5jpfHGf2Yj/dflGD31Q/x4/y2oRjsaJ55MQvalXPz4IQefL+GFCdNQzuc0Jg0di+emR+GVTqVxLuk0cirdiykz2iE2OgYhd9YXbVvEO20Ybbyj7xDR5E+IJkhm81VBCn773zcw6bNE3NqkIXL9/eDr44sI2gs6N1Pi1rBHPK7b8RGemhCM1zuUwMxZK+ATFiVWP19I2Imj5yg4XrUaIkvWR/rX72PEN7Ho9vSz6EQBaOXXbJTZPOnbgBHVm3TCjPExGDfxWxzsdAsqRQZT0M8fFzMyaXuNNGFHxXeXTxuIOWsPC9UHH5xPuQ829xsg6htoGxQxIb57CQP3PYZpQzoIOh94+BgTTouX85EI3AwacnuQ0ZpQLEPJYrqVHQFlNkeNFCFmtsuqZNuYUQZBzjEVu5bEgo/cBE/JSecGiP8kKhXsR5MmiIojc1PPqBrqouvufg1dS1WIKFV3eeVZclzC0oropmaXc2MyweYwfzxZUJ4TWM2TrH2IWaagupChBoiXlnKlkOlyAspXErD21owceqIhZ+/vyE3NRI37O2DNiy/g0IMPoeodd3hT+QP0XLq5R1vx0H74YX8kaptxCtt/S0HN+tUQ/Adac7mquad+wGtDpiC1QgUcOVIKnboWww9Hq2HgXekY+nEI5r/YwgoCZx/F7EeHYR/J2tORI0D8+JfQovwVtJxsTiKbtUdPxz21ogyzqVg5ZABqTl+AmxXJ4GQkbMTEocupvcAR2pBo4isP4cSCiXhzF93a/CPtMOyfPn0aK1euRJs2beiJIdvLfe0d1uU/hEBGYiLS4Y+IqAg6/r0pJyUBh89HoGpF610Wf2+L8veeQtjl/InY5YdHyoFvsfFsBdzTuCJSEg7gfERFuuZMx+ZlGxHd8h5UdYUw5QBWbTyLW+5pDFdW/r3UXI1A0UQg5cxhnE4LpfMF7Zf3D0meP/euZ+4cJOw5jJBqVRHlyhI45SAxMQXwD0FUxBVcJ7hgbW+TC0tXbQiknkjG9ylBuLNGEFLPp9PTvcGoEOL4lUbSeThxLAMhZUJQvNB3/K9Ex9YwXXQgYJ/P1ner6wepoM+Yw2QhKik4sCcFFWvF/e3XYYVorBbRCGgEriICjj2go2Mq0IsCnV/MgYEhiC7l/LGvgnAqYJVNW2VcophTdpYPht4cRCtxI8Xfc1TOppiq4NH2HHK/WVvrRUBLWSE61wVNyshTHxGEQ8nklx0+Pm4hXnvxGTSt7I/PZk/DgN5dMeOzbTj283r+/Y+8c7/hw/kLcTyLfnJk7cR+vuigF/Y17HgPapQpiZrNaMVvUCSy1J7UdOrLzUnHNlr5XL3tfWhSswLKVW+Edh2q4cT+o8j1zUMmAtCnd3tUiiuNkEBf0U6rqbIkcTGoCiTuCpGULJNbdB2FpR9MQlXsx+95cWh333248667cP8DnVAl5DjW7LiI/mPmYeHYx1C5YTt0aVEWR08Gos8LL+DlN15GCdTBuNdfxzNP3IdsWmj90JAR6NSkhgRNOFLelF+rLoXkMbZ6Czz3VFvkJO7Hsw8+iI4d22Pcu+uQ+st/Rbljx3hsSTiHu58YjwGd6iKwRgfMnjsFdQKjaVXzWDSOLIb4cW+iy42xaNhlEMYPkKuorZXD7n4tilVSbbL0qN02/GxF1SFSMfQdZqjiqJuW5RRS1QJy6c/dkL0dgmuKyIJdzy6rGmWKi9armpr/qs6NI5q96mgvMew8W9WhY8iIzLVs1JVZropWuNAVX+QuPPZl/3PIuig42mVrvKRbhp1yyqITC26n+qckCso5sHw1g8sF+WP+4a1rcWroBCT0HIni0WURUrw4fpw2BVm0JUe+KfsgxnUbh/2Ord0zsHpcN6w6yER7mWoJWzGpW0/07dsXfXs/ihdmr4e1m32+ntyYGSd+wPjx7+KE8SSLm0A+hItHf6B2d8Ok1UdNKU80k2kWcvHLxp1oSsHfl4Z2Jepp1GvVBfdjJoaO3o0xA2/EL58uxK5E3r6HUkAcurw9HSNGjLD+Ro3AsPbhSM40ZKRk4Y8B5TFo2jDMGzMAq/YcxP5d27FrTwLibgWmTF9O5V3Yvn07EpIN+5nnkdqmK8a+MhSdcIa2hgIuHAaGDRuFkdSOc/m0oyBMjh8/jieffBKffvopnnjiCXBdp6uIQMZhzIyvj5ASJVCiRCQCfepj2hoavL8xpe+ejdtm/vw3tqCQrlP2YEKHYEQa2AX7dMCyA3RtdZVTfnjsW/EgXesspbdmALvf6oiZP1MpYx+atG+DxfuYmoFty5Zh2xl+Ao3errFvMe5t0w/7HOdTwbq2Dxnb0NOPbr3T3V31N2Tmt9T7azNtm9bK7IfqD+etpm27Njt0ua2m8WxFn6dtBXycEjdPQ2SpSmj84grxGbhcN3+7/BXOW4+fe7fOpGB2nY74yQOGKXuWoYNvAJ3z6bwfGYL68XPpm7uAlJOAVZ+sgXEqoUd8nXV7mwqw9L/BzkpF3wkHcL3tb9jq5ALPOft2nMHgJRfEk8e715zAnEOertNyMXfBCfyc7gpVLubPcfrstuQcLggxbzquNv5h9b/lM5aCuT3DHOfwVkPm4nBBX0gpP6PjdbOvzXPZP2xa6e5qBK42Ao7bW76+voiJrYzjR381/ZQqUxlMF3EjsSSWWc67l1kUeObgURYFotcdzsFHO2VQqWsdH0FTPBl74vCR1BdHEr1EEexMZCElU/5oYLnMjHM4Tfaq0UWDSGyS/rLTk3HsxAVc1+g28ffkIGDO8+2xlFbAtO4dSzLhiC0Th1KBfihVug1ubB6GSuGhtGIHiAiTe7D6+QUjlPcxZoOGXfbBiwfzaHsLQaN6AAfjaXV0Wi5/YQYigFYqKyariWREzWTdfrQkFVXlrMflPF96ieC+n/HBx7Tlh2En9fgRIK6RMK0s3NJ1NNIyXsbzz76O6lk7cJ64jz/9DPxPHkGjns+ha6OKQl6akF6YYPcnBFwOaWnHMOVf/8JNIyZj4uLFyKV1hjtXTsGUTaUoGNMdObRns7+/nCJxhGnQb6FiD+jQoECEB2cjIaMC+lQrh00kEhQRQfgFuniQ3eIVsFZAmVslx5/bq3j8Y8M12SSpL2orDRo1WuYsxaUE27b0JZ9tOU1adFc/7nW2ayWPuEqimirG8Ek9x9EwJTKlY9BYWdKlL1c/TFW4GaqWP1vJ0JYZ65g8JilnqmirKxLLOMmsaKX8eIaUah9XLdyVoutqaKbbx9uq28eSbdrH2XBV5LNkWiF4OmEzru8ciJ8/PIRatSqh+dhX8NUj3XHs++9RpXXry+5DNi2uzaZPKC1zpm1tVPkivhr6JvDIaMy5sxb8Lh7EvCdG4tVKVfB66/KX7SO48v2Y//69xpY6hVc/u30hBo5fitp8n5LviFHyRBMMt4Mfqt1UF8uHDcBXzGvUB6Hp6Yhr3B7YsBTL3t2CLcXi8XaUtSxmz9LptNoYqE27FKm0e/duPNLMklH0wuS5yQk4mFUZC96fQ0/D/IYv1+0BbeRPJ7XaFOXajl92U0T+YjZyStdEXKT0ER4WiQC/Ygg12xCKsMgwBNGWK95SQZicOUM/1AYPRsWKFTFu3Di8+OKLoj5jxgzExPxzVrt5w++P01OwoEtNDDn4DLae3owGUdnYtuQ1NGxdCdH709GtqvPm+x/3V0gLAUGoabyDopAaf4NYIma2r4dx9O/X8wNRLSQFX0/rjPur9ce29PmoezWhYzyK8z5u7qnBwASc7e8vntAIKF6ZFgOQTHADelF1tnGtkoEND3ZA0uYkNIiJQESD55GVTtdKV7N97s36WyjHL9XD0l9XomnJAJzbswKdb7sNs25KxsAG195a79o9P8AhOuUHpG9Bm+tGYSz1q1FINgIi6Zr+H5OS6Ts+/3Rs82yUH78VR55vkL9gEebKefs1mpcEju38CPVa34ZazZIRX9f7vPX4uXfrYwiK3VYZAY5ftSyUiP/UpSczp3yD5P7NEZC4DYNKN8QdDRpie3xdNysW4STaPNQam9LzECNsOuv2Nlk6/9sl3tpyQrfyuIWG6tiR8+i88gxqVAtDn4rer71uvLsKtt7hI8/ZwX4I8ijqi2KhfnRN5Y5fVhLQtlVpDK8ViORzFzF24Tn0Xx+CBS0ChU6o+89OdyP/MMpf/xmjmM2OTAxeugOjm5ZG+rk9eKPObWhXuR62D8zvXBWIyvWK/cNGR3dXI6ARYARoba/zX0RkSYSFy2eOwyNo2weqy/gURYM4TsR/giDrHDDKyuQAEwWbKX/3B9puI80XF+lvNpV5VbRYAU08wxBlrKv8gu7o10D9gEy8884SnEpOp3fVpWHNgtnYn1caTeuUNd2y6/Mnf6If5U9j/CfrkEM2Ll44hrNnyVx0JGKqVEdJupeW5l8K997bBmV9j2D5FzvEnsmsS7svC1u5uRTZFm0gokjZtDdrMCrVisW+FWux91QiEk/9hi/+bydK31IHEbRvK4uzBXGUmbShqFJAyhllywcpsI6hp2xVv7E+Mmi54Z0dOuDhBx/GQw/di7wTGahWpzKpSmElW7pydeSd3IHIxq0RG3sT7qlNLwxEOTS/sbrRJulgyxcfYe6SDcgWioZD0WjZXJNMrH1rF+GYb1N0uKEiXVb40z8fBPkH0SNq9EfJn7YHUSlh/wHIX3uScimNcCaNYMIm13RjFgy8WNadpvrm5Ek5i8eqtlCqvUw2RT9kU8TRoWeAzTJOOfZRmD9pWOoreYPGmWGUOcKeLKiaxRd0g6kyRaPc1jvRKmGALZqysmAdhZL0ycIkaIhaOkwxiCJTAiyvGKJs1EUnTYIhw0r0J3hGWeh6Ktt1ZVm13+KwnmuSNEvWLqP8WDrO8bXoRa107tw5fLXsfZSrG4gzTfdi/+01Ueq661D21uaIqFwZP/57KlIp0HhVUvZ50K0rVK9Wnj6H9OM9sjK6Tx6Dx6+TF3TZp7ZjhrH6uxs9NXJQrODNxg/zJ2H+8k/FimVeGT5//X4R2gatvp77zjpjRUsGdq2aLVaOs8yM5dslPTsB88dNwsKFkwRv1cGLSL8QipHT30fvO2vjtPEL2hPNc5+zkXoxXayOub5rV3StlIRvV6/GD4cD0JXqxXjXpnCK8mZT8D33IhKOnkKZ1r0xcWBv9O5Nq7555fcTvTGgdQUcP3IMpxISkJhBspeRslOPYfTQJzD/p/OIKl8fnXt2RueOHdHprkZo1LW7KDOtYayMYllnRcMJ35ekxNt7O/fDl3R1LAiTefPmoXz58njttdcQSoFszrnOdJ3+OAIZB5ajx9Ka+OzrVyk4SWPpH4EGnV7F6vH9cGzfKeEg48Aqc2VpeKsRxkraDHxCW0sNoZcGt/KVK06HzN0sbmqz0oFV08QNULFic8gCubIuYw+GtOpAq/Q7CN60bYngVXg969O3LN1VC/DpiVV/wurhP46SZwsZe5biybXXYcXi51ErKpgCujG45/mFeLMHsPMQLTnk1dE964u++dKq8gmr6HqBUsaBBWjVYSxmjpU4+POqaXrkViQvOhRRBk5sIHtyRVVEq7HYmWio7JyNQTNcV8Wm4IPHnsPmFLrBEN8Yg3LyMLphJHrO3EkN2IYBfa0VVh7HikzvWTbBGsP4uUgw1kJIr0X1WBLlKsWJm1O1mvfCqPbBmL2BvxG8zEmie+unfd7b5+aeufESR2GVPgfxrTCTl+l6mN8Zh9cg3pjfQfV7WqvjMw5gmjE3/HxaYcE29++/4Kg4uvEWh7hK5egaXvYrjm7ExdBc4zbXp88Mf27q95yAA8aqupwz2zC2VaCgF+85FtNGxMu25dNP0Y0ifpCfmSEYS09qcJ9D6g/B5oQM8FjUG7QDR4c1RIkOc8WqQW/jVrS7WBKVq8XQC8xjULdVP4z396EtRegDl7ET8b49zVXgEgfZzxSPn3s+7fDKZjk3eo59Hwdpox23eGTGMXxHP1KaNabfchRIDo5pgIl7N2FWi9ICJjuG5jmf2xLUUPCb0HYRM7dsctZ3psBqU37fDznY9skIMY58Xhwxcxri6fwizoCJO+mJEjnG/LmYuzmhaA+baJ0PKpYJQPFiAahTNwaPE+00PV2MrIsYOOEIfjJWMGecOIv7Z54R13Wph8/g+a9p1YRLSj2WiG7Gauq+S87iMP3+NJabOSR5Y8rSdB4oHh6AChWLY2hDX2w/kC6uR+k1UNj47XFzVfZkcwl1LlZ8RhukKfufyRXYtIwdK5ZY9GHrU4zv8Vys+8Kiv7Qh1fx+/23LSdPO/fPP4MTlXV46+vLXVf7izxh1jMepTLlK4nMdV6s5Bs/rgYOzN9DtH/pe7knfG/SZEYm+O+Lp+8H9aY8UrJnWU3xW+Lw3YsE2cwy8fW9Jg/qoEdAIXIsIGD+d7U3PQ2zpyuIkUKp0FSNkRV8w4r8RGKKoEZdUQCuH4rm0mwXmPOCPOR38MZtz+uOc/zg4zTKGtuVMEPIQGFQSfV5/AaV+X4m+PTqj4wNd8O6K39GF9uC8oTQFw8mfP/0F+QSgVMUWGNbrbnw3bzIepMBt10cHYANtSfFy/7Z04rsBAwc9gDXvvIJ27dpj1L9XoMbNN9BFhz+CAsgZR7v4z5Y4sOVDK3qZfMcT9AOzwq94ru+jeLTvc/i1Qiu6CGxN0qRv6JjqRoEBDA40VvQKmTyxX2kQb9NBSXhjt6pGhZRzR7Hrlz3IiaqOcNqGY8UPhxBeLByn9m/Gb3T51LCsH/bs2oNzaZk4ffhHjOxOfZm8EU+9Ngt9H7oN2ed90KX/63ju0dp45Zm+6DfiLQqaJ1Mf6GLni4/x2bwvkZTFXweU2LF0Lqpc4X+ZmWex8r21aNi9JZIO7sD333+HLVu24ec9vyP9+AH8uG0L0b7Hz7sPk+w5fP/lPrS89Tqkp5+gwDfw0/qvkF21EiIDApCWZVx1sCvTF3kxypxz0CY4yFr1avFMBaN9bMNGo7JZs5cNXzauU09YY03ZDrtJ05GXAsvKNpieRRuEL8OQ5LCg+C/9sD1DRYoZUiJTgoaA8u3CU+2090sBKTUNjjLHLpWS1Rhp3aTbZQzHxLOxFdHQo8ylmYaAh4wF7X9SxLNtV5/SiSXrXrd4bFfypYeidVw4vi8+fv1xvDuyG73YdCPtVX8Any/7DadOnsOiif3w2fujkREXisMrP8fHT3fGQqKxzh9KtB1F604V8NHovhg3+1Ns3L4f6cWqoVpcJJk9i3lDxqP0sMmYv+B9jGl6HCNfXUcX7blIObwFK7cHoO877+PtV+Kxcua7ELt70JMeSUfSRDD67NYP8cq8QIyZPgdzpr+CiI/GY8Z6+oGUm4kzu7dgX0ALTHv7HbSuEIbyLe7H9VEByLQt3/JE89TXs9s/xZBPjuCWTu0h1jzS+YSDr2odcbVnR2NwwEq8unwPss/uwZJFH2PJytVYTUHqlR8PwZAhQ7B46Ur8Hn4zsHw0hsxZgn3nbQ3x5NSFFhx3Mxa8PRopG7birPhxIX9hZFCH0ngPKVs6un4GHh35EXZ/MpIC8I9iHmExsmdvzOacAvVD523BJ6N7Y8bqgzYtWSwIk2eeeQZvvvkmvW9BfttwznWm6/THEchOOkvzqg9uMhaT52RkICUlA7c9Mx3P31ORHBzGoBptUGPFfrqBm47VnXej5R0cvMzGue2fY/aqILxzLh2nt76HqY/1w1b6PZVz+BNUbzMbK/efR176cXQ+2Bt3TNtJN0zScHDdUmwK6Y1Dp8+jX70QrJ03B+VH/STO1zs/DKUbGwtkIOKPd+1Pt5Cdliywu8GxH3oMBs6fj261InBg7Tx8V34UztMJO+nXYRjepi+2UaAwm25Ur106GtvKD0dy+nlsfC8Wna4bij0Ub/KmA1oBvXbKIAQ/tgPJycfxXpNJuO3BucYNsCTsS3L9fOcg+fhBeoYuAt2mLhMBreEr9+OdPtdRA7JxakeS+CHrdawoSN2/wzB8SKvg8/KOo8OpJfjyV+PH8p+O7B9xQI+i0/zl9w2k0BM3S5dnoNON5b3PSa/9PCDmfej8TUjOTsbmD6PFynYeo7Tkfdhh4k1PvW36BgJNt/mdjOFV6Vp5yEaykY5v+qegS7UpdDMmB8sG3YDZNcYjmebG0U2d0bNhZzE38us5DZtMOXswb85OjNpBn6+88xiFl9FxFn2+aDb8t28z/Lv+XBynRSvb+5XCILo+zuSR9trP/DwWHZ78zExB0AOf0vX2acyuNwudPtiOWr0mYvWYeigzfCUOfNyFZrv3cSs6vXFvSaTPWsyZMRNz587EiJ6N8UrzKXiiMZ9YsrGPPn9q6Pl8/cNSY0OxbE+f+wMYen17xH6wCeeT6Rxbahv+vTbFPYgZfB2eeLkehjUpgVbxY7Fg1WaklGqMxrX4i8DLOT+4Lib+vhr16B+f2/vc0MRZv46WAJttyuf74cAHaPjQa/hw63H6LC1DjW0jsXCfvKbYOb8H3ogYhXT+XHzTgeb5uiL/fRCBS5j/9WlatHAaL805hHfpEbDHa/Dy8DwK/ueaY5eTlovfkygowCnnEg7SKnJnSqcA43lENyuFjU9XRK+ITHyWluc+dkqJblLIlIcjiWS3BL2kmgLW/MTdksRgrBtcGcvvCsW7X57Fb3T5lkFPSX94PAAL+1fFrqdp28zd5zDvcC5SD5/D83t98Ongqtj+eDTO70zCHopNHNmSgAF0Tbz8aVqtHV8Ke787hVkkD9p2ZOiaixjdszJ2PV8ebWgLva+PyetD1bSimP/lnzECga9aMy/yRVEOMui9FmtXforITjeCP9lnd9D3hvF0JH2rYN8O63Ou8Du8bCjaDqqB/cnZSD+9Cbt7NMQMDlpf4+dz1T+dawQ0Ak4E/B2BLsHzoYBwCCpWqU8/hGnLCvpypGg0cSinQDJ/jcgqaYoCfQeIBcV56PahOjGTvE1vQXd6bJxkxBmK6EqP3YmvFaKVrtIE/6Y3+l2gFYRZdLe6ZExJ+LN9chgQEIkXxNv+WCMPTTs8icX390LiuRT4+oWgJL18TySyU7/lo/jv7d2RlpJF20KEShvEfO7DpVKGjhzwfuH9WUa9FN6Z19QsD5q4EP3pBJqdfQkhtCcH9xelb8CcJR8IGVHnvlHi4wMvvI8HjLLoM5U7vDAPHYibeHoX3nhxKlIokCBwJoWMzBJ4qMd1+GjaMvhFhaJkhWq48NNnGLN5OWkGoFq1Mlg6eyYuJubg3kFD0SLqIird0x8vdb8TWz4ei94Lt5LeLfTSxEuEQ3/MbdIaH85cjBPJqageG4mWD3XAV5NOyu1CZDNlH8i6bLEo4OTezdhyqSYm31UHR1bOxUfrD9D+34Q3vQyxdnQKPv7wY+RmpKDMzQ+jfFQxJIQ0QfdKKXiaVpokl7oBYUdO4Z72HTAlvh3WnQpC53vCcYH7O+rfor9yavAWLCUwcOwQgckD9mkhWiVG35wqHEjlO5+ipbYyC5gvH6Q+0TSkecOdY4NcJz05k0hU0g0zsrMGAnwjpODE+laSNXZipxkVk0ztM/n2MqkJuhS0iZA5SWOrlq7lQ/kTcixjCJo2lICZO+1YQWkXB9KQTUv5tNqjKPbcUBMkgaJXKFUL+akI41xhN0SerS1UmMHydlnPdSEp7DG/6KW05FOIKhaFjKxk3Nb2RmzdshLpJ6NxU+06dB4Jgg89W1isaW1k/vArktZtQ7kbKuNECj26UcjEK0PUDzNLxQ/1O76O6TftwQ7at3jt+NGYTsxHRr+N1pG7sJrKnShou2E9XROm0aroI9/T/s63gJeltO/VArG8zUTlG9GpwlZzpQGfg9jTrvWr0XrwNFSjlSckhLbPtsaAn08gt1kJunysgE73NkS0XBBM/CtP0fU7Y0F94OiqcVgU0AmP1Imi8z9tBkQvVEzbvxQfHq6DFzu+CAovi9S19X4MWB6KaS/ej2jcjqRuP6J3n44IphcJzlj6CQZM64+bo6+gPZG18GiXMFrIcxTznxiGlTYT3T7hyq145f3+qHBrX0wuHoHJexpgbKdYLB85DzWHPYKj099GmQFDEbR2BrZX7Y6Oda6kETanuvinIOBbT5mlVbNdYvDYUhkMaDl1Kz6/awdm0W/bMYe/xQdz6cdUUixSdyyk/YO7Aecu4am3HkNV/jxE3YeX6y2hgCewf+NSurlaD4e/XQpSQVJsAA7N/g4p/W6igFs9vDy4Hb0kjxiU2o15D+W++ZYCL1uRvHcffEo2EJ87/vl+LSQLO/fWVm03BlPLfYOVc2l1X/J2OqNHcuyXUibdUh+Mf/WSLwFs3GMI7u3dGQm0ormVNx266VO85Xvo36oq3fqnc9hT76PbaytwKKcXyrq7dlKCS6BYbbr5Ty/vDDa2DxMrqknK61j1vwP1SeWJZ8cgq8cdaP/eJ6gYVfRHpazvDrQuRdfoRmo5fiVmNI/B/gVe5qSXfmbsWYz3LtE+2d3kGDXoNhhPPVIJvxx/B1WUcdecvibs85tXyE/PJRtqnOPpacZuGYjI2I9F76ai3kuHsZjmBn1CKIS1Fht2p6BBYbYK8a+FMe+NwzffrsRcuuOz93g2St5EEyvnONYvz8S7R7shjj9fzfvgw/aDcIzb6V/smhxPbrpMmQjBGPS9p6rYtqBNvxfw7jrmRCCmWEnEBJVCVHAwLUL/1uu41ap4Fb6cZWP+lGMI/RjklcoV67ZCpQ9m49NtXRFf28UVzbH8kr3/HORqHj8EbZ/o7+E6yR/3jNqO4x2+xZdrV+Lde+m3DF1GTv3mNPrFrPVyzo9Hg9jiYjV+VKkoehqU0HepO9rm5fvh+E/fo1S/pejWIE6I93j+33iqWrI474fGtcLZDx7CmLrv4Y472uPLmRXF+c5htwhWQujszmNXvlQgondfpCcdstGnvEtDCzh9ZhxLpevTQKy8NQLFSfWW1iVRf+spD2NHYQNajTD908P4MdQXx5NyaGmFr3g6hj3yoof+LUoghn67xtSNRJUvT9HiKzrj07ueZnRMxcafz+CnzFzSoURPxgSHcsNS8fKyk3ioZjjeeLIcvfTwEhbuIKVof2z8gSXz6NoSWLgnHf3L+YGn5ZhlJ5BVPxxtu1dAhXCvP35Isuikv/YzRuNE7+QafVtZjDYgiGg5Hj+905xqFEQuMGVg46IPENjjBXy7+AOSzkQswTx77T4MpCc6r8Xv5wK7rAU0Av9wBGh5sisCRKDoXXBwGLFkYM8KDEphGViiswMX6C83WwaQPuzG61zdE4vlih8jBo8JqmhECsUpnejF6SURMpYoQ4wsRvFFmWznfT8KPEcbF9+ubB8ff4RGym9AFcATBpSgYc7MBF0y+cj7Hvv72TSN9koxS070Xxmx9UkG1eiCpURl9H72WRncIb7UDED5KuXR+taHJX6kbw8WqrI0xxq18Hgtqdm4ywi8f+9FBNDYhFBAiy1GxtbAk6OHi3IubV2ycdV+9BrVT6xM5qbZWstVM1Woey8WLb5X1Ms92B83dZQsK3Brgc20GfMakYAP5ny6lKeHkSjs22wpBou6D3Jz06m/z9B9cKIbNN47u0LJcKUgcu4b81UuWymNWnPNwIUEJUdJkTLfCCGinCFsiElWEJoJEj/VDuVeoqFqBeVixGwqsmgQKFN16UtaM7hUUW0QRVOWC3a7omw0RNkx5wDTlR9imrZtZaWjWiNVTEki2/UMg5zZk2XEpNosSJqNIIq2ujUfTHUqsIA8L7jzqU00gBbdVVbWlTXnnFDUopUHRJbF8fMn0fTO61GqQhIW/5fe6B3YCCcS6cLWl/4o+QSFI7hCHDL3HqFtMD5Hle7t3DtBwddU+kfXzLaUioQjQIx4jsBGzs3A2cR0RJevhRb8d09n7FrYDa+s2YPbH+TARG2UjI6mC3xaFRZ9C0aPCUIpCrT8Rhzex12mQNs+xgaJMnpRudxTwiD5+ZP8vgv0A4HOz/TcRgG/Lwytwmc5tL7y9G/bsVr8UjD0zu2jXzktHEaiKGA9MXMhJs74FDdnfIItxH1pRiLCN6xG/ZHTcMsVx30T8enQYagybT56LqBVnYR1xv7lmLyjOgXAa9G5jYPi3BR+kVEMwmmVptwDOpj2NEzH8dTaaEbByST60RwQFk48z9+Fjs64VHi1cwJtIcJbb/Dq58zMTAwfPhxxcXEYOnSoi7SuXi4CAaGRSNtBK+QzBqJBcAR6LclALzKyZkgxDMmgPYQDwumnbUuUr1gBpTm8XKEH1m0KA/2uoqesgOJhKqgTDIoDiRQQGIqAeiVRpgK9wJleglGhx+f4Mj6OAkhJxC8pfqhLyQSMDS6HT/q8jlEPNEKJzLK4tCLzqn+OpK+rf1TYHSLsrP2ec3Bg81agRkMcfqsh7v2kCd4e9QCql6CnsbDdbIQvoeFMOwjdHKwZ613HIU/vlsij217yQsrB8ViRtxTcWV7Hyr8qJucko+eaL/D11++hEu37OnXTaQxsbCyVdzdVJCi8z+c357ejecQBDAmuBtSrRyFKOv94m5Ne+tm/NG1jQedfK94XQCPmg4Rz2ahC72IRL0cRPQ4Qa0iMHTCIYs1v/5BwYcMOTEQEfV5yAhDNF3Dly6AC+aFPCL75ZhPiKrvOCbumrXxmDRqWao0m49/GA42qI7NsADYZ7FCymyVW1RnfRsnGiksv/Szq42nrNfxpX1SjV/APU89fOm9C+9MG6N7GDUU4AJ2c1xJd+/dCXaODzejKptXk9Xh0RnnQbKMFRxIJaz7akbHK/nRe4P5bKQARPNdcU04KDh9PoWB3c/Tiv4GvYs2IKHSetR69X/J+zi/s+Ybd8TnH0/cDfwHk0anLU6raaTKSD/XEF6u+xnuPVcUDJSdh/5qBhEbRTbTkC53uiEEd4/KmMa3C77w+Gd270v7M1Gz6WSqSmrveeuJPL1Dl3wdW8pFPwFkEq0Sxg9Y3lcTgSv70LeCDcmVCKGjMbLqupQ2/K6uAsNgLUto8s/MEbl+ZjscbF8ONpfwpoHxR2POnwPSup8OxbnsS1v14Gi+uPIdZ/csjkCZbdIg/ytPKat7trfP9dHO6OJ2//Pwx/vlK6LLzAtb9loQ235zFgA4V0L9GQbPTav7fUfrLP2PUycyDORhD35ujGkdg2ZBY0IZBMF+rsfsSfY0Ys8LfM3aBdIOhYsnyqFCBrr7o8qvHum8QH1eZAjJR1+T3898x7tqnRuBaQsBtBTSH+zhkJcJ+Ig6kgkNM40RHLnDQiiJIvvRD+xKdsB9+V178mbpCFvjlY/mjbYdR19mfiwCvxsaizfT35/ph65+NW00zxbqM4JsCVWvUMCkywChnDcvLKWPXsAKRrkFGKzhphDKN+WbMRiKqIDRbpkQMGZSWVXlk+1yyBzvtfO9lFQRWEjyvVZI2ucZOFdWlbtJVQcqKmkESNlXZMmoZ9EIzVMi3Kql+urTBsmSUpLzScm+/FLP4VHdU3AwKgtkMqtnHTSk7g83KBrfZPi7syB6w9sxX2kUt7zHsP9j14yJUqrEXP/6wCLXqPI32Dz3l1syfwyZi/agXEUmv8W7/6EtufFq6gdsrHMH8z7ZiRMeGdCMpGwc3rqQVubdifDk+l1o//5F9CAMHjkGnkZPR/vpY+GUn4uxxEqkUieDoMDTCbqQHDUCLWlFI3r8ei7aGoDs9YSGTinCr3CCLNSgBKHd9I0xZtAFtr7+XLt7PYv1H9FKoNhNpRZa38I7Sv7K8TM3aODLvDB6ffBciqEl+gWlYPXApqo9W7bXshseUo4ggrfWOf4T6mI0W15/Gmxtao3t5XgdlpbN7NmJXZmXcWj/ONXRvCRmljP0bsLJCH7wfLX9B8TGQN3SmQDMnP1tAOekEgRx6vaCLA+1/mEThGw7p00+iK06PPvoo+venp11eegmjR4/GmDFjcPToURGEvmKjWtFEILhWe0yq9zju7DsT22b0ESuTD3/7AVpPScZ7v9aGf8VQ3E+PhyeHfYBezeNwZvNcvLg0HBMbVzdsqNFVOVC2TlNkUVA7qtYYkAo2zx2NpeGPoDEvm7KnlKP4hH4gjx3xDNpVpODrhHF0trvVLlGky8G17sOr/r3RatBcbJ/aC3HBtCftsjG4rv1rWE1bjPwyZiceXfwperWrisNr5NUefXooBdEZ6zXavuQRDL+nGvZ/Pg+f5/XD61Ep+NKbDn3mktZOxpKd96ETRbvXvDcB4S0fQSU6/dnXMXgGjMaGfuxeoDbxilGZ5DnT61iV34whz3yJ3jNG4flWd6PYpoVY+Ou5Ih+AFgFg/k1PAdcRa8egzG390TN5CWp7m5Pe+tmwLtr4dKcxeorGqCKN3wd4I7c7dtaLQMixVjg4ai0S+tdFidM/YuXOXLQyULVn/mXrkI2HMHNZPF5tVwsHlg1B3fYl6D0uz6H+bQGYlxyFN3o1B32oMJqw7vpOY7u613LK0S3YQyvoP30mHjSzMGEIff/cROL+ZXFT11DEvzgbN056GGlb30H3tdmYypbIx7U5ngYMNMkvFeIHk39Z7+NmWCqi2TmcOZ2CDPp4pqccwspVSYi7h95jEVEarfzW4usfE9CgeQn8uHYNfOt5mm2yW/4VZf/n0bwdRfN2z7LZWECXkUNce53+MypVug1jVu/H8Fb0VEVGAo7sTkdQw1iE057Cns/5DahxtLUGrdZPPE/nD76ZQo90OOqufsxvf9v3w/UtcKZ9e8zstx8P10rDO88+Af+WU8XNhc0zh2BpRG+8Gv887m5WDB/VW4mTdIOPX09QdFMeziblIoPuH2WkZ+CrQxS4rRSIYLoZ0oSebVh3IAs3XuePrXsIswDvHfGnxWP16arpQ9qzefgNwfhty3l8R53u76HjvMq5cpkwVKHVyJ6Sp++EY4dpW8gyUXi6RRRyziThTVKsRX9n9p7GiB1+mNypFG5vEIqtU05hz4U83FrBH2d3XkLNB4qjjF8W5n98CuG3huHGpBQMW5yKnl3LYEjd4oh86xCW0HubinoAmh7Z+ms/Y4Qt/zIIEkHmYLQb8X9oTzcOZ/bml4uGoFLvMExZ+TP60Q2g89+vxXqStRJ/PwejTtPWODQvGbXG0PWFfwLmDnkZ4fET0eBaP59bHdUljYBGwIaA241KDor5iOCeDDiLIBFHoczIEpX5P9V9KPIUGhqGR/z+Q3tA2wMZInxt07F51MX/IQRoIphBQ3tZdpEDk+a0EZFMK8Do5LnKi1lIlikZgsK6dGFYYh7PQ+NmiSEralbMm6mUOJjJbXFjSLbtyC6swK5wwQRTgu2YdSrbODY1br+RlIwiSAOSadAcJKNiirMk0WRd5YJo+lCyhihnMpl6VLU7Ya5rXWjY7NuNCp465I8hm3WHmewKuqsu092D0MqTRFfqeLZrSf7dpSzacz03dz/OpazBrh0xeKg7PeHgIdXo8QjyfP0QU7U6Uk6dQERZ1wBrGO4cMQbHXx2NJ5YqA7Ux4JWBKC8jOsZKNboYD66FaSMfwcBXhuATJdqoE8bfS5faxH6c9nd+deQAzBO8Cugzeph4pJcWq3kP5NCLXjjFtXgcA468iiG9P5LabQZgRAuKsNFWF/Y1R4JpHPjLxFA3yZ5oJpMKuRmJOHU+C35B5Wm99jx8f/hWtK1eHOmnfsJSWi03LDKVXiyYivDYWARnHMTSySPxye7WGD19Ab0M7SgmrdyFei36YFr0Kgx8oicatR+A7u1vQWxwLo7/OB0zV3ZFowVx3lfXiMZcxMZ3P0KnXm8DiUex/1wmBZyDkHbkOFKPBuDgUd76Ope2dCqD8rHAlk9Xo/nAR0gziddl4viuH5F2YwOBbSbtjVpQ8oZJDL2U6Y033qCX7A5Gly5dxPlq8uTJ4iVjBdnU/MIgEIWBG35BUvt6dI/mCVNhPO0X3Iv2MQbq4p0t9Dh0w7IYRDUfWsHzn29WijBmZElf+60fUze4Vg/88N52em+DEW6t1w9fraxE/H20CYUtRTTErLf7oUklKdeyPW3LU7KzKeCQNalFqRCD509vx4UHG6JsyGOiYYzP298cQquYKNTd8B+UalINs4hTr2VLwk71iFd598D5t29AQJtMgemcrV+jFq1qKulNhyIKt/e4D1/1KIOHduQK/TXHe4jPFwcblGVuhLU2lGucotDy/UGo16YSNtG2Kmu4qSWDBcfrWMWk05MTw1EvUj48HN5yDL57kM6h10CSs4mejmn+FKa3jMXQ9zZjzUAvc9JbP+mE9M6WD2neVxOPT/O4yjEiAJr3RB/aAKlswCAxDs/1aGl8eQQ4xgG0VcZ72z/E7fWuo9sN8rMzZ9NKxNGo9Vq8CdtjGoJMiNTv7W9wnRwSScjnGNGgB6b1qI5qAVPE3Lm9Hj31J+SD0W3+PmSN6I9qpZ5Ay+Hv4b3B7eVLcGNqXNPjGUA3YHzrcTjHSmrO83gb05mC8Hy+8jJulmqRK4mtY8qqHgEt+03Fwr4NqZ3+6DlvMBrSY/zDqNZj+GA0qhwkwrr8nWlpGJ976v+M799GWTrv8Ce3Xj96AXPLsu7XNhHNcWj1VFRqLeVIFJHtx2DDYLohIua+53M+Impg2OB6aFMpBFO3JmNgA2edTy2qTd6+H/yrdsPpTVno27Qa+tPK7

3. 登录、注册

 1> 界面搭建

  界面采用Storyboard,效果图如下:

iOS学习42即时通信之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qpZYEFFmg9DxhP0uwRCL3S7F9Riy/g559/LtNOO609xx133CGnnHKKPPfcc2a8TT755GaQvfjii/LEE08I8Rhhn3zyidD9XXfddfLrr782GINZZ51V1lhjjSJ9v379ZMcdd5QPPvigCGvIQY8ePeTYY4+V33//XcYYYwzZeeedZc8995S11lpLMD5zGXvssaVz586yzjrr5MF2z7nmmkvmm28+mWqqqSri/ITnv+SSS2SSSSaxoHPPPVcOO+wwjzYM6B8ee+wxy+ftt98u4sYdd1zp1q2bbLnlloJxu8IKK8hiiy1mgweM4g8//NDSfvvtt7LxxhtLr169ZIYZZiiun2CCCWTBBRcsznm2zTffXHbddVd57bXXLE8i77nnHsuT60cffQjnNs8888g000xTXBsHgUA1BGr1L3X+oazaxRHWchH46quv5Pvvv7cHQMEtssgirdq4hXG45ZZbZLvttmu5Ly1KHggEAg1GAHZx9tlnl3322UfWX3/94jrCl112WTnooIPk6KOPlrHGGkuWWWYZ2XTTTWWzzTazdBjFt99+u5DWDV4MuLI8+OCDMv/88xs5MP7448vqq69eGGHvvPOO/PDDD2aUlq8rn2PEoodnmWUWu+9WW21lhvEzzzwjJ5xwgkBGUJZ777234tJzzjlH7rrrrgrjlnQYifzyXHxygWE96aSTzIh0g5F4jP4zzjhDDj/8cEuOMYtxPHDgQBkwYIB89913Ms4441jcEUccYUYvxu0UU0whTz75pJWxU6dOdl9nyL/88kuZaKKJ5OCDD7br/GvCCSeUN998U6r9i9T5559vA4127drZtRjfvEOYcAxp7g0rHRIIDAsCYdwOC2ot9BqUeGuX119/XQ444IAwblv7i47nCwT+QwAjjql0WEba/oknnmgx1157rcAcYmDBbmLUYVzmMt1008lNN91kQVdffbXApt566615Ejuee+65jWVdd91168RhEC6xxBLGXNaJLAVwf4xE5J9//jEjF6P5559/tnOehTIvvPDCFVfOOOOMZkB7INfusssuglEJowsDvMkmm0iHDh0sCawqbDJGLcwyhqcLYRiy6EqE8lMuN4Dff/99GXPMMS0OQ3fSSSe1Y74mm2wyefTRR42xXXLJJeX000+XZ5991u6LEfv000/LmmuuKeONN15xDQcY05AO3IvBQN++faV3795y3HHHGft8/fXXF+lxfXj44YfDsC0QiYNhQgC3BBfNwA/jtwUioMxD0qmhpK4HacMNN0yvvvpqmnPOOZMatfY0J598crr55puLJ+vevXtaaKGFkk7nJVWKSafsijhlNJKyCkmnhdL000+flCFIOpq2eFV4adttt7XrVFHbPVVZFtceeeSRSae40v777590NG55aIdTxB911FFJFWTSjqiIV9aiiOdAfbOSTmclVaxpgw02SJTHRUf2SVmHpB2WxetUlz2rKtm02mqrJWVokk59pS222CLxjCGjFoHQK6MW/9Z+d/QBdeyjjz5KOjWf0D/oDnSTumKZDlh55ZWHCsNVV12VlDmtmg5do8xp1biNNtooqUFWNa6+QPSa+upaEmVErezcA52sRm5Sg9p0sLKjaemll06nnnpqkZ0yu0nZ1oTORx555JGkhqfp3LPPPjupMZu22WabQmcXF+qBGpVpttlms36CvgL9v/XWWyeeX433Ipw4nvu+++6zy9HxyjCbrvX8KKcauUndQCxo0UUXTTfeeKNHF79qSFs4z6auF0l9hC3ulVdeScoSp19++cXOlYW2e1LGkECgIQjU6l9iQZki0xrkzz//lFVXXdX8qlTRmU+VGpG2KMCf7+WXX7ZRM+ewGIceeqiN+jnGX4qpJgQ3BvyqmCZiJE5+5A8ropVNVlllFRvlP/744/L888/LTDPNJKp85bfffrPrWTAAa8CUIKN5VbaiitmmoEhAOXbaaSdZaqml5K233hKm3GAAbrvtNrtelaxccMEFwi/X4+OmHYHF8cXxU089JTfccIO88cYb9txMR+Jzhn8X01z4kDG9GP7FBWxxEAi0agTweYXNxEUAXYRrEroAYZob/ZJ/yn6twwoO9/3ss8+MjYSRrPV56KGHzL82v8++++5rrCn6Khem8WGR27dvb7pw4oknNp9cT4PvKswrjC6Cbyp+wLCe+NPCqqJ38bctiw765b333isWlFF2GGwlPsz14ayzzhIlNMwFAZcF9y+GZVXSRNSALRawde3a1bA95JBD7Db0D9UEtwd8bVnzAcuN7zCuHvg982y4auB2AevOQjd8jPHDhaEOCQSGBYFwSxgW1JrhNTpaNh+oK664oph6Y6qq7IflRWd6CMWIUcp01N57720f4plCYqqM6S4XfKvoDFA4dBQYnj51he8UU19M6+2333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HHHDNNPvnkdkweOshJb731Vppssskq6kA5v+ZwrooxqSId6UUJvTJ8kGvnm8Yff/ykhmhFRmogpRVXXLEibI011kjt2rVLH374YUX4nnvumXgPtHuXueeeO6kxluacc07TYfpPP2mnnXZKOmCzJJtssonVdeKnn356u5781ci1eO4x9dRTJ/LZYIMNknbYSVkvzz4py5UeffTR4ry5HShTm9Zee+0000wzJZ4d3UFbR26++WZ73sUWW8x0JHpytdVWS2rgWHy1L2UE7Zr333+/WnRF2HHHHZe23XbbirARefLOO++kRx55pFG30MG9PTPPnX+WWWYZe07qXh7O8eqrr17UsTvuuCNNNdVUafPNN0+//vprot/UAYN9SEvd83N+O3fu3Kjy1Ur80ksvpYknnjjdddddifrKfSgH9Z9fzvPP1ltvXZHVRBNNlHSwl9RwtX5xvPHGszpCO/APfb4aoem2226zawcPHpxmm20260NHH330xDXzzDNPGjRoUFJD2foI+g4woT3fdNNNVkYu7tq1q9UxwvmA+2abbVZRJj9Rwzstuuiifhq/ikCt/qXO3+9qwpB6EPjqq6/krLPOkscff1xWWGEFS8kolFEXApO38847yyqrrCKqNC2suX1ppyTa6G1aiJGoCyNRRpEtQVRJyN133y1rrbVWRXH/+ecfez+qHCwcZmmfffYRVcQCmzDGGGPIRhttZJ+KC+s5gdV20cGMsRZbbrmlB9lvYxieigtH4gkzDTqgETX8R+Jd41bDiwAM2FFHHSXbbbedsag6sLZZiU6dOokajxXZa8cu2jnLnXfeKfvtt5/Fof9vv/1201Ewtcstt5yFa4dss09qmMJqCLNRK6+8sum1XXbZRYhn9uLII4+09EzJ6oBeTj31VIF55KOGrajRZPGwVM5YEXDdddfZ9OxKK61k8c3tq1+/fvbMMHoIugK2lmllNVrsWcEBAR/YNFwVlLywsJb0dcMNN4gauPZ+G1pu6sIMM8xQJD/55JNlnXXWETX4paz/PBF/her9HnWF2S1YXmYF0b18EH5J6+eEwW42hSy88MLWPytZI/fdd59lybtTI1JoH8w06MCizq1oXzC9aojLVlttJTq4E+qIGuJCGznggAOKa7bZZhtZcMEFZcMNN7SwccYZx+oSdWjVVVc194cOHToIbZUP7Y7ygB/PzD1gmRHqlhrjxnRzroaz0EfjBgHm1QTsrr76arM1qsVHmCKgwBZSOi3CR9WBTpcnbZTF7WHadthhh6RTZBYGs6DTdTY6g1lgtOOjJEaLSvUbswFj5aINLd1zzz3pwgsvtJEVI7FTTjmlYCsY3eoUVdJKnbRy2ghPK3pilI/A0oGTTj15lsUvabbYYguL10psI1ZVlBbPKFI7ifTYY4/ZyEv9ZorrtJImbZBpkkkmSeuuu2765JNPiriPPvooqTFmDAlxsDe77babMXCMFrnP008/nRhNwySqYW2jZBga0sPOrrfeeum9994r8uR5nJUsAqscvPHGG4Yto2Dy3nvvvW0060l5VjUYkzZwY21gSnv37u3RSRWgxVN+WJ3ZZ589qWIp4mGIGM3POuusVk7YJZ7J5euvv06qcOw9MtKGVdEONOm0jOEFa8R75nnAFWG0zKg4F+7DPXr27GnBPJcqpyIJLPsxxxxjI28Y32uuuSblzG2RUA9gd/I6SRwjfFiMv/76y5KqUkpqeBsjDv6wGdQr2As1tO0+8803n93HLvjvizoHgw5zsPTSS6cnn3yyiFbXh3TggQfatcSrAq1gYXnmcrlgaWEBEDVIjH2AZQMzcFUFanEj+qu56ZUR/bwjIn/q8LLLLpt0KjtRF5gx4p3mogZEGnvssdOll15qjKTHqYGR1EhJagynjh07erDVBzV6i3MOqBu0QwRW8/TTT7dj/0Kf6aDeTmG88vw8Db86kLK2OJOyouRJWhg1hBkvmESuRf/CbiG0d3TKFFNMkeaaa66krkEW7l/kSbuhLdPGmDXRwblF88zqB2rtFr1PGdX30tokehe9wL10Wtqzs/SEu9COqau0XdhvnZL2KPvlWvStCyyuGoCmu+iXmE3iemduyW+PPfYw/QUOOkAp+pkyc6tGUVJD2vJi5onn04G63yrpVLfNRvFspIPho39yUaPMyoZORN/CPII57PkVV1yR5p13Xptt8nfhDPTQdLDnzy86GEwbIvSPrg+rpVd3hTqzDtXSNTaM/lndcop3wPWUhb71gQceSM6u532s34M+BJxhXemfyQeBLYW5d8HGYObW3zPh6pudaGd86Cu5hmN14bA+jX7FbQHS08c4A6subdZHEI6ceeaZCduGds6McP7BJqLtqytNRf0YcmXb/K7VvzRrn1vYTzWoCjYAPxqYAW2o+jxijIFOqYsaSMZgwHDAym266aY28lIj8hzrKAAAQABJREFUVlRJihp3hW8MIyh8TLViCuwfIzpt/MZGkKcagcJ1qtTtg08qDAYjLkZaasAZ88WojpFwLjp1WLAiSyyxhKihImp0WhLuR16Mxsib50JgN0477TS57LLLzFldjSdRo9RGczi+M2qEiYFVZQTM9TDFjOy0U7CyqqI0FrZv377m/8lokvzVGDIGQqdJDBO7oX7BeMJm1icw1NqZCqzLm2++adeoQq1gPFVZiCpvOeiggywNo2E1mkUVh2WNjx/MMCNe8iBOOwFRg93i8TlTQ1MoN75NOOFTZoQRMBjqVI6NnhlBc8z71ukf0Q7ORrtgDIOuCsWuq/bFSBkmF9wQyqcDgiIpzBT+XzAyMBxqiNo9iwRDOcAHDSYf31uEZ4LxWXLJJe25dtppJ9GORtRYEB2EGZY6QDFs3D8SfDbeeGPz/QNn3h/ptcO3PNWwN1adcsKgUUd4N9RXBPwoQy6qXI1NIGyhhRYyRgAmBsxgstWVwpJfdNFFAiMd0nwRoA6ziKdHjx7GKKITnFH1UqOPaBswZtpRF/UR9oq6xDum7tQn2j2KGnY1k+TxaoiarzlsphoyFdeo0Wh1HRbK65saR5aGuko7Jg5dBLPFjAv6Hv2KrzzPir6nPSK0TfQcTBZ6BabssMMOs3pPPIwbugMGTAf2FqfGs7UTfJZpN4ceeqgxarUWHJEPQnvQAanlQ3+RC8+PfP7558aCwtKhm9Av6MFc1JA0XHhedD/6Rw2XPElxjM5Gv+FTCesOc+wLrnh/6BD6AvosNf6NsUP/ImpEW1nQgTD5+A/D9IMTaxDoA9Wtyq7zd4GPJ1KfDrYE2Rf9DTijH8sffMLVUC5S827UeBvpM4HUSVhW6pHrThaIoSt5p/7+ioJmB+hE3hnvYc011zRmVkkpUWPXmFfqDee8Z+o3Opu6hsD+cw0f+k7eAce8B9oj7Zd3SBtgtpEZEXyD6xMdqFp/j084/QYfNdKtfLw/+vWQehDQl12IJiuOm8sBIxVGOKogbETPiNWF0RijHhdGiviNMup1YfSs0x2FHxBsBCxpLqpMjFlkpEx++MyoEV0kgXGDvVQjzMIYCTJ6VgVr7GQ+gmO0BY5lVgymGFaFEVcuMAeqvIogysDoG0ZaDd/EiJ/RtQtsHPnrQrYEU8OxKhqPTqp0LYyRoYuzzbCejFi5BqagPgFDsMqFUai6XxQjWvCnjC6OvzOn+KHCprjwHLCOsLuUhbx4BhfYBzAFA0a5On3qUcUvZUBgdVR5FOF+AJ5+fw/jVzvgginAVxd2BNFFJEmVWfFMhFFOfGyrsdvVmFtG8jmmOrgy1oS8XGDPtWPxU/uFXdLVu3YM437iiSdWxOPHSL2BdacOl+sO5cNfGlGFW4dFY0YARtkFdgn2qCxqTCSYlBElYBPSNAjQLsET1rIsagAaa0c47I7rK1h+GFreM8yfC7rFmVtmxZgpoE3CXiG0/5y55XqYfxhgF/zXYVlhhmGryMel1uwHekEHb57MftFnOpitCINxdHaSe5B/LjoYNCaXMB1AF4yyp6Ft0M7zMsFmwqYi6Cb0hYszt8wuoZdom5TJr8fHmXaM4FusRopfar/0Hbwb+gNYavQ4TKGLGps288J5ztwy8wZ+6D0XZvpgqZGVlR2mv8mFc29XMNows15O0sFCEg9biVBvePZchqaD87T0a/glo7/R++UPfSazcC48N88Iw6kDMqtTMN/+YVYPBt7P/Zc+oCkEOwD2mr4b/c5MGDO7MKLgAgPPOZ+8D+PePCPX8g5gbP3DzCTrLfycX2blfOaB56QOUbep+wi+xNQZZmDxVWdWgNlj6rv369QbbBLux0eNYCsn1zPzlvcbtAFnfIkPsdFmVRhqD9G1BjQHgZVlBKoNXLqr7yPsbC74fLnAODCiycMYdamSqFgJW/bTJG98YJxx1Olz4eMCIwuLCCPHaEwruK0CVXcG0els80Fi5KrTXn5J1V+YEx8xk4ARtxqeNuLNWTcYDcrC/WAlGfW54C+pTvF+ar/58+JTycgzD+MYn2BWA+P3g8BmsGKzlsD6MdrNBbYIfyv8cpdaaimLYoTsAv48I6yrSx7Pc+CnRDyrr8FRlYgntVE1bDUjbpgn2M6yUIZhEfIFl7LAdlFufx7iKSf+UlwzrJLjTx5qSIh2dhXZwez6Cm1W4jIjkdcD6h31AF9hmOq87pARTI4uwqjIc1hOmC3gE9K8EWC3AvwGaVPM/rBTSy7UZddBzDQxIwJTR92irlCv2e4KXedtX10QjGViNwXqIuwn7JULjBT3ZPZKjSGbEUMnuzBTBusIowhTik8jvt1DE5jkXCgjzFRe/5kJof7TDpmhgNnNBT0Ok+hSrc3BWuKf6EKbQ1e7MKPm12kPacH4bLJiHaaX1f46WBYYQdhp2DQEvUW/kUver/A8MKn5DBEzPN7H5NeRln7NWUDieBeeFoaQmZxcwA+fS4R+grLkzwkLCSNenwxNB+f6irKAjxppxo6X84WpZcbJBV3LtluUQw0207EeTz7UFzUOK2bIKD/Y532G59fYX8cCHcpMLP2sDh6sr4WB5d5qoFu29O1lwfca3GHoyYtr6fvxxeW5qgkMsa9n0IGGXcPsA+2DupALfY4SF9ZmCKceKqFjSWhn3h9RB6kbMPLl+pbnF8d1EWj2xi0Vi6lUFIsr5PwxqCS50KhyY5C4cppyPjqCsgrshkY5njyorB7POYIhiYJh6gcjw6eRhsTW/cZozcWNQKbg8jJiQKKEMfBoVGXBUM0lv5bw+jDAMKZRoxBRPLUEw5uBQVnApoxDnqaMfR7HsceTB8peR60VSeggmXYjzg3xigTDeIJiLSsYsqJTZ3qH+pUbv9x7eBaJVXsn1LNcSOPvFzyYfqTDcQErFCPuGsPyLjyf+G0dCDCVrwyUbbvFIFKZ2ooFJRi3uKsguGLh+sJULB0lnTzCAAmDkCljhKl+ptYx2tCz5XqLOwyuR4QT78adXfzfFzqaeop+w5WJQb+7vOTp8uOyLqT+Y4CU9QHuU+gi2om3Fc9nePSg58EAW1lNO2XAjzuRC8ahzqYYgYHLENPy3g7RG/QJueT6iudhOrn8PBhAZSEtbbycFsMGYWCBG0YuuS7j+mqGbBmf/HqOua4+HZynZ9DC+8fto5pgsOb609NQ/xiYsFjL+1X1jzY9pzOOBZ6efkT8UgY+CAMlDHHaBs+TC64r9OfgQv2lH/Z2Qh3EJZJ3ittILrjK0N6oHwwcEVwfcUHBFYXnpC/HcHchDoOV/g6hjbqbCQvWfQDGAGMndWfA9SeMW0evYb+VlmHDrhmpqdgzDp8mnco2xQNrWK6UjS0QPl25PPTQQ3YKO4bPE40RheIKg2OdshMUfTXB/8YrdbX4WmEYmtyDDsb9iPO0sMf4nKFE3b+GRkYDGx7BB4iVzvUZt4wW6WzKgs8efrPDK+RPh9ld2Xg3ePM8YdthMvDTHV7h/YGjumrUyQqMwRS/uJyp5jnp+EaWgAdMdd65+r159xjnKOZ8RTFlpM4iGB0MWHKBAQhpHQgwAKY9oLvoeDFsWbFOnfU6gHHrfp/4+jM4w5ffDV6QgNml3ninDVvqzGU1pDBC64vPr0EPIrSnoRm3+XUcU/+5nuesJjCpDP7ysvC8wyvMBLHyHcE4Kbc/1hHA1GH4YNC6AYvewHDBp9IFXF14HjCo9Tyejl/SYsTUSkvfgEGFL6kLM2sulMVZXA+D5Vf3OT+t+st969PB+UX0kQysaglGcrVZNXyWMdJdj8P8ghm7dzBQoJwYbRh6vOOmFlj3/L04wQBr6uUFAwZwGJcYmaxvgUWl36WvxVBVNxUrsxvw1An6BwZfML/0MRjFPvPAOhPWyJAGw59BgdcdnpFjwhsilI1yDQ/Z0pD7tLY0ozfnB2I0i8M7mxYzVcYIBkVUHsE39hlQkr6QB4OBaTcWBPjIkgYA++DC1BQNEeWCkcQoiusQGg5bi7C1FkLlx9DwKRimNWoJjAcjWoxbb3T8whagBJgKo6PAsHfxbWv8fFh+aayMJHF6h7F0oWGCMYIhr75IxYIlwlC+KHimPIdX6FzpOPN/W0GB+HYr/NKB45LiAtZ01gisBPUDBcQz1FLkTPfAKsF0ladCyQd3AZSr+jIV9QpDl8/IFJQ/Aw4wcMEYp65iqIBVPjPA9DLTvz7gwt2DQaBPZVLvwC8XMPN6yayBzxwwbVee9syvi+NRiwD1nG29MGDcaGQKnDrDx1lNBuXulsCAkfrOlHDeXpnybQqjkDYHk+xEAe2QDt8XL4EY9U3XHhh4uBhgyNQSDHXqet7umMWAxULQS+gfDAgEowO9O6IFw4f2gUsEC4XcAKM8EB4+04Le9j8OoExMYdMGfUEcYbxH9cXksEJg/WDTWUTmQjt1RhldSB/AwmP0Gf1Pfi8McPX7t8V5fj1uK5Tdpdq7GJoO9mvBHKzdQPXw/Jf7M5NZFvorBgzMHNBnMoBnIZW7mIAn5WQRX1kweFmApXsOl6MafM6sKnUw/3AxetLDwBrjlNlXDFI3YOkzWIhHv4gNQP9Pm+JZuRb9SjukTdL2EGwV2iPP21TkCK4O2Beuu+1G8TVUBJq1cYthy6jPfWJo3ChJn75hep1GmwujMR+ReTiNJ2/o5Ithx2gI4waly0jOBdYQZe2+iCgZGjf5wi7QEBmJcUzFo7FiiCKwbCgB2FE6Eg9npFYuF+l5Jhg2GAkaD9fgg8VIHmWBQscvjikNykOjYcSNAU0jRDnkbB55EuaGOudIjgH5sqcl/mA0TPx6acjsAIGvKYKvHtM3YE84PnuwQhi8PsXJVFkZf57TR6j1xWPY82xgyT3ogMHd8yMMQ5bpQIxPGjd+UjAECEqFv8Zkeg72iU4cgQmHWQZrysnzgC2rlV3Ax40Ewhjc0EmRF3WCDpVdHqpNwYK5Kz/Pj3vCwnsdq/auKU/5/efvhDJjxFKnqAe8b6auOKdO6TZmVkd5Vwz0MGbZFcT9I6lndBjUDeokSph6mZeVNPi6YQBRz5zpxVChXYU0TwQY7KJTcp9OSorhQBvAgGLmCHee3B+fQR3GJu/ahTbmMz/ojbLu8HT81hdP3UXHMHWLDsUIwQhkps0Ff1yMX5hl0rhPaTW9TRtmgEm9pc3S5jEQ3ViHSWOAR/3G9QGDEL9Ib6PD0ua8nEP7BUOwxaDhORAY806dOhmbic6gPdK+aKvgBhlCnwGzR5vlmXA1c7/5XE+i89CrGIHkyxQ6ugDDCsEgpA6wsw/vD4zZa5h7IeCL8cUAAYMVnUEYeDk+1AXIAfDjGSA3hqaDLXP9gnyhz+Dd1BJm+WCQc0G/YLDT1yJMwTMIKO8YgUHJs2Fg5kKdZv0F0/qNEYxoWHgMTu7NoNA/1DEEUsXDsCeof9WEd0DfxLNTJ8Gdd0qfkRuvkGX0kbTHsi88fQ0Y0o/7h7pBP9RQoX+j/oQ0AgGlxgvRy4rj5nCgRl+dYihzWKz0V+apTny1MB1BF3vuaSUtVgCrw3jio4ZskY9W9GLVrjYs27VAG10RzwHpVWknHdElnSqoiPMTdlvId1wgXBurR1f8aoO3PfFYeUx5ysJ1rKhVI9yiKJeODu242vNWC9ORajlbOydcG07SaaeKPWw9sbIN9m89yqrYXn4ezi+7RpQlf8ahxXOtKiHbU5hVpNrplrOzZ2bVN9jwHnNRVtv20XVciFPFZnsLqhFcE2/ScW0u/g54XoR48igLOyNwj7Lk+XGc1ynSqgFp+xbm11GX2R8xF1XI9qzszezv2ON5rzplZrtNlOuWp2HfYWW/ijJSV3IBK9Lk5c3jR8Rxc9MrI+IZR2Se6JhyXfD7UX90YGKneTsggDrN3tu5kNbrNXWZNLWE9kv7rE/YVUBnDEwfVstLWT/bl5y67pLrCA/zX55VjWSr5/k1Hq/Mpe1EQPvifl6/2au63C5JU74Xz+PXsCuEDgZs/2s1Lm1vXuqqMmTWXtF5rku5RgeKFXtLUybKy36ofu+yjuL52SWBvHJ9SNnL2PK87G6g7g4V/Qpt1d8xegRhtwYdtNuxf3Ev2r7jRv+Z6yGeRQfxRbxfV58OBhc1oiv+aY56kwv7uaqhXPEPjTyfEhRJCRJLqkRGAlt232B3B37ZXYGdK9hdhuvVRS3P1o7pr9UQrxNeX4Cy2vbvYTogsX+xzDHgPanBX9SBavkoCWG7JXgc17NHOuGUU2dFbD/5fMcS9hZWosrqghqztqMBuwLRn9C3stcyWPhHBytWz7hHN93lRAdHSY14++hAttiph3ef1yl2zwHXkP8jUKt/GY0kGmnCSC479eBW9Yv/Gb6m1Rz7eVBGwOx76w7drerh42ECgVGAQFvQK6MA1rjlcCKAaw8zJkxduzA7xCwJcTBlarzajBGzazDOrMkY2YJ7Ervy8M+XsLFM18OSqzFYzAyOiDLhEgZjiTsUbCUC+wtLzQwBM4lMwcNaMrtHeVxgYlk4hm8wM3ic84GlBkc+zH76MbtP4CqAa5ULLKsa3oUfuYfX98s96dvxh8b9BuYWhpuZUJ/FUgO3zowFzCozmbiOwDbjJkJ5KT9lY3YL1pXZAtLgEoarCAw7rDuzZvhlw6zD3jLryDkL8bCpeG7YfMrga0w4ZjEabDv1UAcl9mjM8DErANtP3rguMoOB7zWzutgvhIcMQaBW/9LmjFsqMFNoPr1UriD4VTHFwhRESCAQCAw/ArWUz/DnHDkEAiMOAWUfjeRgKz4E94BauwWMuFIMyRmDi6lpZefNfQpfe/6YZUQKxi1GftnXVhloM2gxRnFnwm2DqXt3k6BM9LMYrvkCwPrKynPhZoOvsAsGpRukHja0X9w3cGfxxW/sgIGByloG8qsluJYoS2oY47qBAYnrAq4W7urhbmeeB7YCBi6uYRjP6LmycE8wxJ1OZxHM75gBgbLBhhd5g1N9wvobBjT4W1P/ePe5S0R917aFuFr9S5szbtvCy45nDASaEwK1lE9zKmOUJRAIBAKBQKDlIVCrfxnikd7ynidKHAgEAoFAIBAIBAKBQCAQCNRBIIzbOpBEQCAQCAQCgUAgEAgEAoFAS0UgjNuW+uai3IFAIBAIBAKBQCAQCAQCdRAI47YOJBEQCAQCgUAgEAgEAoFAINBSEQjjtqW+uSh3IBAIBAKBQCAQCAQCgUAdBMK4rQNJBAQCgUAgEAgEAoFAIBAItFQEwrhtqW8uyh0IBAKBQCAQCAQCgUAgUAeBMG7rQBIBgUAgEAgEAoFAIBAIBAItFYEwblvqm4tyBwKBQCAQCAQCgUAgEAjUQSCM2zqQREAgEAgEAoFAIBAIBAKBQEtFoF254NX+H7mcJs4DgUAgEGgMAqFXGoNWpA0EAoFAIBAYHgTqGLcppeHJL64NBAKBQKACgVr//V2RKE4CgUAgEAgEAoFGIlCLOAm3hEYCGckDgUAgEAgEAoFAIBAIBJovAmHcNt93EyULBAKBQCAQCAQCgUAgEGgkAmHcNhKwSB4IBAKBQCAQCAQCgUAg0HwRCOO2+b6bKFkgEAgEAoFAIBAIBAKBQCMRCOO2kYBF8kAgEAgEAoFAIBAIBAKB5otAGLfN991EyQKBQCAQCAQCgUAgEAgEGolAGLeNBCySBwKBQCAQCAQCgUAgEAg0XwTCuG2+7yZKFggEAoFAIDASELjgggvkiy++qLjTJZdcIj/88ENFWFOetNQ95fv06SPXXnvtcEHx6aefCpg3tfTv319uueWWqtn++++/ctJJJ8mff/5ZNd4DjzjiCPnxxx/9tPg9/vjj5e233y7OG3pw+OGHyzfffCNXXHGFvPzyyw29rEh32223yQ033FCcx0HDEAjjtmE4jfJUzz//vHTp0kVQLL/99tsoL09jCvDJJ58ISofPa6+9VlW50LEMrQGfddZZctRRR1Xc+p9//pFnn31WLrzwQvu8+eabFfFxEgi0dAT++OMPq+PVnoM2lQtGwzPPPJMH2fFPP/0kDz74YEX4l19+WbTL119/XX755ZeKeDr4F1980dK88sor8v3331fEc8I1119/vVx++eXD1HHXyXAUBIDZwQcfLD///HNx92+//Vb2339/4behgvE07bTTmiEztGvOOecc2XfffYeWrFnGUy+OPfbYesv26quvyiyzzCJXXXVV1XT333+/3HrrrVXjhieQd7DrrrvK+eefb9kMGDBAnnrqKfucffbZct5558lzzz1XhBH3wQcfVNySuvzZZ59ZGPEPP/ywfV544QXZfffdi3PCG9IX9+7d29okbXWJJZaQzTbbrEF1xAv16KOPykMPPeSn8dtABOr8Q1kDr4tkIxEBRpIXX3yxrL766vLRRx9Jx44drcOZfvrprRTdu3eXbbbZRsYaa6yRWKqG32rNNdc0g3aiiSayzhDFscYaa0i3bt1kkkkmsYxQIijMrbbaqmbGjH5zJoVz0r/77ruGDZ0Txu9uu+0mF110Uc18mksEihgMUMYhgUAtBD7//HNZbbXV5PHHH5dFF120SHbuuefKHXfcIY899lgRRl2i06VNzDzzzEU4OoRO+4knnpDlllvOwldZZRUz6CaYYAJjqmhPO+64o3Tt2lXGGGMMq5fcc9JJJ5VBgwYJRiDtlkEo7RZdtMwyy8jEE08sc845pxx66KGyzz77yBlnnGH5v/POO4IBvdJKKxXlaE4HlG2XXXYRHxBjdCy22GKCPgVTmNWtt95a/B+Q0F9nnnmmpan2HAy0GaRj8E8xxRTVkhRh6CoGHCNLMPKoRyuvvHKDb8n7rMY0UhcgLHivY445ZkV+YNWpUyerY+hgjMH77rvP9Bys6e+//27p33jjDXnvvffkgAMOKK6fe+65Ze+99y7Oh+UA4/GRRx4R6jZ1kjIwcOPdfPXVVzLVVFPJlltuWZE1z9GrV6+KME54TtoNAzze59hjj21pKCMG/t9//y1XX321bLjhhhZO33TPPffIr7/+auf+BUa0mRVXXFHat28vnTt3lpNPPtkwoiw777xzHbYZQ3yLLbYQBraUY/DgwVZ+8hx33HFlwgkn9OzjtwYCYdzWAKa5BNMgYSzpZFZYYQUrFqNeGglCA6Nx0JhnmmkmC2tuXygWOuKNNtrIioZiR0GgVFCeo48+umy66ab2aWjZ6XjWX399mWGGGUxJumFPB4xiQImOM844Dc1ulKSjc8UQZ2CCwgoJBKohAAPGoG277bazQS11hRkQjAhYnVxeeuklwQi78847Zb/99rMo2srtt99uOgP2yI1bOkxmgzbYYAMz5JgdwvhBz2D0EX/IIYfIkUceafkwJUubO/XUUwXmkQ8GCcYEQn3GqHa57rrr5OOPP262xm2/fv2EZ0ZfIBilsLUnnHCCMBXMs4IDAoYQDLgqMCBtaYJxxWCD99tQIS361QWDbJ111jHjvmwgehqMW++HwA/9Dmnx3Xff2YCJQRPCL2n9nDDX4RwPjyy88MLWX2IAYlgjvDsGbbQPZhq23XbbOregfTEIwDiFNNlkk02EOsLAkjaSG+Lo7AUXXLAwbMkM9p/26KST3+Cvv/4S+mwGBAgDKMpBH4UBy2CQenfggQfa4HWHHXawwSPY54Yy7cmFPh/DOqQeBLTRFqLJiuO2eKCVLKkSKB5dmbWkFS3plJyFaWVPOgWelL1IWoGTjvSTspDprbfeSptvvnmabrrpko7Okk57FHlow046mks6bZ7mmWeepKPJdMoppyQ1Si2NdgxJG0XSRpQ6dOiQdForacNKygBYPHnzXpRVKfL0A9Jo47B4VTpWBlXMFn3XXXcl7ZSSMhBJ2Z6kxqVflrRRJFUASdmXtO666yZtdEWcsjFJjdA09dRTW5x2hkkNsKSj16SdXeI+Tz/9dFLGJikzlLSRJW2ASRkhSz/NNNOk9dZbL+movMhzjjnmSDoFVZxzoH5PSZVggbdOY6Xtt9++SKMN38o/66yzJlUGSUfWSZmEpMyUpeE96Sg86ai2uKbagU4bpT333NPKyvMqi5yUqSmSagedtONP4Kajc/uooinej05vJfXhSieeeGKacsop0+STT550OjGpwiryuPnmm9Piiy+elMFKqgiTdiJFnBr26bTTTksLLLBAUqMjqUFv71qVaFKFae+OekX90Smz4rrWdNDW9UpTvEv0xbLLLmt1j7ZBfVIjsyJrNSCSskvp0ksvTWuvvXYRpwZG0o4yqTGcdNanCKf9UfdzoR7SXhDyOP300/Noaydq/FqYspoV+eUJ1Wg2fcc9yJO02qFbEjV6rI1QFvSht+Gvv/7a9BntcK655krqk5lnmchzvvnmS+gE9X9MapgmZQYtDc+sfqDp6KOPNj1MGWm3tFP0oOvevI2RnnAXdAV19e67707t2rVLOpvkUfbLteg/F52mTmoAJnQe/YQa8nb9+++/b0nIb4899rDygIMOUAq9ctxxxyU1sDyrpIZ1UkPa8tLBjD0fusPlxhtvTIsssojlRTqdSrf+wuPRJ5QNvY3+VrbSMNcBSVJfzzTvvPOmGWecsXgXlB2hXqlPqGHKc/Du0fPVhL4JTBsi9Fe5jixfo+4K1leWw4f3nP5S3XKSvwPyoyzo/gceeMD6Hd5x3uf5PekrwXm88caz/pJ8EJ3xMP3u6ejzdYBZcQ/iqAs6+PFkxa/OBKSFFlqoONdBYJ26TSTtQgdaRTrqj7LBSQcSSQeqdsx5z549rS8pErbxg1r9y+gaEfIfArCfMIrOPuC3w7EqBksBQ7HXXnsJDuKM0GBUYCNhHRnpMSWhSlnUuCt8cWBKGJlpY7MpREaQOJbDfiBMzXCddiL2uffee40xUUUlTFurYSiq1GwUycg7l/HHH79gYZiOWX755W2akDTcj7xwgidvn+5h9KfGllx22WXmHD///POLGrjGTOBozygV5oepTUbcXM+o88MPP7TpEcqqitkWA/Tt29dGn0zLkD8jTxgPZ2LzspaPmaoBN/JGYHhyX0EYI+1k5JprrhHKzL3yeDXejbEeGuPJ6JsRM+VmegqM1EgoFo8wPUbZtVMwNgxcVHnIlVdeaeViyhLfODVqBT8ywmFBSIdQLp4bFou6gusIH1+0oJ2bTXmRHlYAdgAWQBWoqEFseVAe2DJG9AgjfUb/MAwhgQAIwHCxiKdHjx7GKNJGnVF1hNAPs802m8UzrQ4zhMBeqaEqahAPdUGM9pOihp1nWec3j4d1oj3AZlJnc1Gj0eqwDgitzTEliz8qggsSepQ42jhtmNkd9C/6DlaaZ0X/0tYQ2FL0DuwhvsPMyhx22GGWF/G0LdohLhK4XhCH+xa6jald/DuZZmdqvNaCI/JBmMqmDZMP+jsXnh/xKf5VV13V2D1cGg466KA8qahRb7jwvOhidB1uDdUEHYpOxB8U1h096guueH877bST6WbcUJgih7lTY82yUiNIYFmVbLB+CQYRph+cBg4caH2SGrZ2HfqPd6FEjF2LbkMHoscoJ3oYHKsJ0+PgTD9Y/rDugVlEF/DHhYYp/ZEp1En0K/VIB0t2a1wLmCXknfr7q1YmcOGd8R5wpYOZpZ9BV1MPqDec856p3/QN1JFceG/YB3y4L9csueSS1ne4zzp1WgmR/LKqx9yX+sxz6IDOjjnH7sA2CBkKAvqyC9GkxXFbPYC9helk1A6DwAjZhdGfKnM/tZGpTn3YKNsDGW3p9IoxmYTBfsCS5qLKK6mfW2JkTn5qDCY1jIokMKGwgKpwLIyRJ6N1Veg2istHpbA4vDc1PovrOYAphsXRafqKcJgKVZZFGGVgtA8jrUZkgmFwVplEMLbkrwvZEswQx6rYiutVyVuYGqFFmLPNjFCRaswt4TAz2jlwmMCEdAj30c7c7m0B+gXTC3PgzC3vCOalPqHsjMIZ7ebCCBk2B4F5hlnKRaecClYFZmjjjTfOo42lYTSNwBCBWy6wJLA/MGbcHzY8F/XXslPYA/CkzpRFO9iKuleOb0nnPGNI0yAAYwmesJZlUQPQWDvCYXZdf9DGYGjVaDTmz6+jrTtzyyzVk08+mdTdydgr0pSZW65XNwRjgD0PZmRgWWGGYbjIxwUWNZ+N8fDJJpss6YDST+0X/aID9IowGEdmsxDuQf650C5hchGdMra2mMerAZ1gQfMywSDDpiK1mFsdVJoOUkPYyuTXM8vDrBSihktaa6217Ni/0OW8G/QzLDV6Fb3losZm0sGHnebMLTNh4Jcztcy8+bPBCKL/c+Hc2xWMNjrHy0k6WEjiYSsR6g3Pngv6mfeNvnWBAaafyctCHP2MuhEYY0g/WP7Qh8EAu/DcPCMMpw7IrE7BfPsH/QkD7+f+y/2bQuiXYa/pS9VYTUsvvbTNtDJLBi6w3My88inrb2bYuJZ3wIycf+ifmLnzc37VYC5mHnhPasha/wCTr+4/9l54HlhxZvgQ0tE2ylJmbj1+9tlnL9okYfS/zCKGDEHA20EZj9pDdL2iLQojLka8WgGluy4sYJSUCz5mLjAcjIDzMEZbqpQqVt6qEvRL7Je88aWBUUS08trHTvQLRhYmlhE1I0hYQ1adqjuDHHPMMcbwMVLGYb4+ganxETrpGOGr4WkjbHx4XWBQKAv3g0HM/aBgjXHCzyV/Xm20NtLNwzjGJxjf2vK1eT6wm4ySy4JvHxhwbxfSwSq74J8FI1Of4O/F6JvRbi7kA5Prwig/FxiHHJ9yPOVy1oQRPb5jeXrtvA1P2HNVqoUPmt8D1m1o4v6SQ0sX8W0HAZgf/Aapj8zGsHNKLjC3rhOY+YGNg6ljlTd1nnbNgid0D4vIEJ2GNl9BFjfRXmHtYK9c8Eflnvjf4lPLDBU60oWZK1hHGEWYUnwJ8eMdmsAk50IZma3I2xHMM3oJPcEMF8xuLuhVmESXXAcRpsa7sZa0TxdYNHSnC23Ur9PO0YLx2WQRHUwvevemm24y30jYaV9UxCwQejyXXM/zPDCpargWSViE5Dq/CNQD0tLP5Cwg78LTwhD6zJtfB37uc4nepiz5c8JCDm1Wix0w6Ft4FhcwAG/YQmazXCgLcTpQr6NPSQNTm+86gL6GJaccsJ30lR5PPtQXNQ6N9fZ7UH6wL+tbj2/Mr2NBP4Kup99Tg936PthU7q0GumVJX1sWfGDBHYaevLiWvpj6z3PVEvxlWVSJMFvA7CdC3WBGEAYZP1768YYIu3UocVW0a66BQR/au21I3q09TRi3pTdMRdZRtE0neQeQJylP2dGIc2OQtOU05XyYvuE+KDCkHE+YjsKLeM4RDEkUGlNNrLj0aashsXW/MVpzYcEEwpRfXkamw1H6TGXSiMvii9c8PL+WsIZg4Nfmvyi7mbUDKAsdrSuUHFsWCPhUK9NCKPX6BGOewUZZwNuxL8dxjltFfeJlohOg06fzQ4m6MIVEZ0M4ZQ4JBJoCAabyGSyx6wEDV6bqmZ52wbhlGh7BNYrFikzFLrXUUkX9ZLCLQcgADmGqn6l1jDb0Xrlt76i7J+BaQzjxbtzZxf990VYxcNE3uNgwCGeAV5+UdRPtEQMEN4dcMBRox+ilsm5qCr2EcYfrFcJgWRnR4vYYEOprb4aIssRmVLg+QUeho3PJ2zrPw+LW8vMwVV0W0uIOUE6LcY2gY8qLY3O9yfXVjJ0yPtXui8Fdvi+DFFwfcmHQwvsvEwWeBoOVfqAs1D8GJrhjeT+n/tGCYa0MZFX9XM5jeM8pAx8EnY0hTtvgeXLBGKV/BU/qL/2itxPqIG5nvFPcRnLBVYb2xqDR6wfxGKHeXpQ1t7bJQBHCBxKpIcLAgH5ffXaL5LX6tSJBHBgCYdyWKoI6lNvIir3pUHT4DJUbQemSoZ7iQ5aL71mHEYSPFY0fBeYKimOdIrRtefLr/BjDjobUWKFRcQ86NPcjzvOAQcYfCKXtBh4NiQbd1ELDB2v3qcvzpxx0HmDDVkMuMLqu1HUKx94PI2NYlmoCG0KHnz8P6cgH7IdXYI8xFmC7YCjKAoOPry0KtalWApfvEedtAwEGpDB76BI6XgxbVqzDBHldpq673yftBtaH+ucGL0jB7FL/vdOGLXXmshqSGKH1xefXoJcQdMbQjNv8Oo5pq1zPc1YT2ji+p3lZeN7hFWZRWPmOoJNy45YwVtXD1GH4oJPcgEVH4UOLb6sLuLrwPGBQ63k8Hb+khSWtlRZdjUGFL6kLs1IulMVZXA+D5Vd3Nj+t+st9GbR01xlKH7BXTaiB9FkMrGoJRnK1GSlmtjDS1T3FLoX5BTN1hzFDkHJCBDyqa1hq6fFa92xIOARD/l7cL5h90b28YMAAjtk4BoKsN9EFxtZv0PexZkZdN6zMbsBTJxgYMfhy5pedjXK2Oz9n5oSZhE6dOtnuR270Du0ZKD99XS6w6rTbkPoRGL3+6LYVy+gZB3v2vGNqDid+FF+ZMWgsKihlXwyFocPojQUIPpKlwcF2uDAVxggQZYbxx4INrkNoqCw0Yr9JhMZGQ/EpH6ZRagkMCyNojFtv5PzCTqB0cManY8Kwd/Ftcvy8KX4x5nk2Olj1qauTJdNSMEB0zM6OwCpj7LrApKBUGDHDZLsw7QqbRcfHaB1GAbxdeE46AhipphCUNvg5o0x5WVzG4jPKxntkGpdyIODLlDK/zqyU3x158J5Y4BESCKCXcFOh3rrRyDQndY+Ps5q0K3dLwFhh6hrmBxcFF9pWUxiFTNHDJPvAnTpLh8+CWhYvIdRvplQR2ocvqLGA0heGOnoyr/Owe2yDiKCLMf5g1RCMjpGx4BLDh2ltXCIwVtwAozwQEJQRQY/6HwdwzhQ2ujgfvPMe1deS6ApBT8CmsxjJBZ3gjDJbUKGTWQiMGwX9QX4vDHD2Dmdxngs6hrK7VHsX6F8GL2zT6IIRl295RTiYg7UbqJ42/+X+MIxlof9gwMDMFn0YDKaumyhcTMCTcrKIrywYvCxCbMjiq/K1fk7fQB3MP8ThZuFhYA2hxGwoZIkbsMyOUJdxlaFPps+iTfGsXMsAk3bobRKjM8cgb4+QRbhCMDvgbj/U7dwVhXLRT+BuxEwIfR5tAsM7F2wAFo6G1I9AGLcZPhi2jDJ9JIYyQSn7tA0+Om6Q+GWM/nwE6GE01lyxkC8rWBkVMnpDyTNydIHho3Ng5wI+KDWUCfnCZtDwmQ7iGH9PlAOGKEKjQekwuqPj8nAYhnK5SP+/9u4CSpLjSANwnZmZcc3MzDIzM8rMzOw1MzPLzMzMzMyWmZm5Lr7wRV12bffMStqVdmYy3uvp6oKszL8yIyP+iMrRJrlzGBCD1TVyvnicBqYJRB6e3Cd1oZR4+Axog54ymrOQ9pWh7h6kxQBbzElQH+UxzJXdKmNllJJwPcUhN869pUxYZYKSbD1ekwEFbaAL28gvNLk6xz7fcKSwTE5WZ3C+/LXWOZjjBLtiaLR5reNYCOcwKigkuGJZMMxwkt9lcvTsHHceheUaz9QzsO4o9k0/IRQcZTt/Az0P9j9bDgHOkzHe5nQCgeFg4XgGlEiOUHKb466/GQ/GeAldU5EY/XM+lus832sdN76NeaFbOo0Rop+LxpTIx2X86tvOqYl8mR7FREm3YDxweLF5DMQy1jFpDDH6gOPLIJQXWfpgmb4zbudjt9VLVc/1vmEIWwaNdhCM+fZg4bCZ9LrcfrqXPoYbp5buwewJQWsTPVbvQLQ6xpwSLzWlfqu3+jHv5SQwCPUBOtDzg7HVdiq6Bl/GFweBfqNr7INX4aMvMIrgpw0MJ2QHfW9+MedxgpQ/n+OQIeYGz2aVSCnBILcibYyONvcR6Q6cgPmKEfSzttF5rejTDEbpC/tFGNFYeMale3MK66OPEQZ97TO/r2JCPQO4aLs+CXfPFGGCuS3Rz83h6mpucZ5xqQ9rszkb+w3/ar/nyFkhdD7Cw/zMmDVficJInzAXtyKaXOOi3d+3ZwgEqJPEoWl7K27U2/1t2yMUlWsQ2mctwrks22cFgTBM8tQYFNNakZGgnmusxiCYiomBNb0lHAM5Vy2IQT4dt+H8GDxjeJBjhBoXjtUPqy20Ky7YH8qhDi98x2DLN/m96axOc3GdN3jDCM9D6hXsUG4va++yfeEZT8WGshmtEOCzqk5OjsE9XWNDPb11XGW5NliEhXP8UC5s4iWFHVaHcNwz9NZwhHjGmKDsmsRKCu7TCryrLo7Xs2zPadvhfG/XwjOYnPa03A5vPZ9rsC+J+/yEmBh2qNf8nI38e6vrlQP67Iz5Gn/zsvTPcMBzd43XOke/rvWya59zjRdivc5536/zfFulJYyEdtcO2960t0Y3/bSsLOPVmDAGS9qxU/vqW1vDSB4jNLxwTR0PYyB1gjHnfnQTMcbomVacM7+X9tQ1YVzkWtnWDfXGvFUH9NVg8nLMhxM66XzXhEO6sIKLe6mv9VDr3nR/K9pvlQRlwbNE3efYlp6KdIcFPU8X1TMuXWS1hnCkq7j8dq9gvifczGcwKKGn58/CMfXwDK3wEo5PnZ7fcAkjegwWddqv37RiVZgwlMdgSafd2hcG8xj5rbkvjOjENhjlxNm31RXCkBuDdMjr94n1YOdi/gxDfL57zd/Bao9BluRqR7EE2wIGnlMY/FMfWFZQOESpz+sYDGttWe2MqEiustOuWBIG6xgGaeIXRnyukBRGcM454XDk6iX7xtzj+ehH2mTFCfNWGNljOBxZ34jgTmvbRjpk9hnXlW3inuE8jfN+VnXdit+r5pcFa3bVSVsRsF3V5vD6RsuLrZLwAHP5kFXH+/6OwEZHoOuVjf4EN2f9GQiRupTLjAU7m9/1jxUcCzYvl8WKiNAYrOREQhzYaFhKS12CQR2D4UxjMKJhI2d5dwpCIJjuhX9MwBFnnKlPRBJyqbZgese99957oSqWMoRpETV+RwQhl9mM/NNcgss/B2L8Bls5Wn4Rzq1EWtp+/sc2/olCRAdzWTtGY0TH0tC1VJp/pOATzPa0Xfss0xVrq2e9tJmDE8xpGqyWBFUOh4Jhz0CNSEoamcG0p0GrTZFmMFXf0praH9HIbF/rZEV0OJeIdB8OB6PeUpqFlX/YEAz/9I+QGMscDM6Ma/yToS7/j8Cq+eV/nBIHU4Qpmp+1u38fAAQsBSNkF57Z0lLkcQnpCHl06QhsRgS6XtmMT3XztynYx0yNkj9PpAdIJTooRHhf/rSUNilPYUwuvEG/O+pkSUzvMMxzbb2o5h0SeavS9qRtCN1XmoS6mPekn0jT2hnRLmk2coVLpGVJ39ovIn1DKkC9/CbH1ct3comVt0qklkgLgLHUAS8IS12QalGpHmFYLlxu7pYLLYdWnqzUO+l1xIt0MPCc5mkewR5nyoEUlWU52FIjpQa26URSPKxYIV2l59suPIZMr1lmt3bjdhGn/qsj0BHYxQh043YXA9qL6wh0BDoCHYFEYNX80l8o6x2kI9AR6Ah0BDoCHYGOQEdg0yDQjdtN8yh7QzoCHYGOQEegI9AR6Ah0BLpx2/tAR6Aj0BHoCHQEOgIdgY7ApkGgG7eb5lH2hnQEOgIdgY5AR6Aj0BHoCHTjtveBjkBHoCPQEegIdAQ6Ah2BTYPA4toW0SxvnnXpCHQEOgK7EoGuV3Ylmr2sjkBHoCPQEVgLgR2M22Xrha1VQD/WEegIdATWQmDVUi1rXdOPdQQ6Ah2BjkBHYD0EVhEnPS1hPeT68Y5AR6Aj0BHoCHQEOgIdgQ2DQDduN8yj6hXtCHQEOgIdgY5AR6Aj0BFYD4Fu3K6HUD/eEegIdAQ6Ah2BjkBHoCOwYRDoxu2GeVS9oh2BjkBHoCPQEegIdAQ6Aush0I3b9RDqxzsCHYGOQEegI9AR6Ah0BDYMAt243TCPqle0I9AR6Ah0BDoCHYGOQEdgPQS6cbseQv14R6Aj0BHoCHQEOgIdgY7AhkGgG7cb5lH1inYEOgIdgY7A7kDgCU94wvDTn/50oeinPOUpw29/+9uFfbvyx0ZdU/41r3nN8KIXvegAQfGjH/1ogPmBJY985CMH9d6/cve733345S9/OTzrWc8aPv/5z69bzKc+9anhAx/4wLrn9RN2HwI7/BOH3XerXvIqBAyET3/608OxjnWs4VKXutRw+MMfftWpe9z+H/zgBznoVexQhzrUcKpTnSq/24qaNAz0a13rWu3uhe1HPepROZE8/OEPH/7whz8M3/rWt/K4BZpPetKTDkc5ylEWzjcxPO95zxuufvWrD0c60pEWjvUfHYHNhMDf//73nFDPda5z7dCsz3zmM8PZzna2aT+jwefc5z73tM/G73//+4GeudjFLjbt/9nPfjb8+Mc/zt+HPvShhxOf+MTDEY94xOn47373u+G73/3uYKwd4hCHGE54whMORzva0abjNv74xz8Ob37zm3PMqt+Zz3zmheMb4Qe87nznOw+XvvSlh+Me97hZ5V/96lfD7W9/++GSl7zkcNSjHnWnmvGf//xnOMEJTjB84QtfGI55zGOuec1jHvOYYd999x2e+tSnrnnennhQv3jQgx40XP/6119ZvS9+8YvDFa94xeG+973vcJOb3GSH8975zncOr3vd64Y73vGOOxw7oDv+9Kc/5XzqeZTAep999tnhWerTpzjFKeq0ld+veMUrhgtc4AKD8Xab29wm2/b0pz994Tn/5Cc/GY53vONlGdqmHhe60IWG73//+zm2jMFPfvKTORe+9rWvHU572tMOr371q3MMvfSlL81xtrICswPnOc95hjOd6Uyzvf1ni0A3bls0DoLte9zjHsOTn/zknHS+973vDbe+9a1zAFGSxIC8znWus4PBeBBUdektKf9//OMfw5GPfOQcpCbLS1ziEsPzn//8SZF89KMfTSW3lnHLKy6WhIHLQzbZ/utf/xq+853vDNu2bUtjtiZ4iuJe97rXcMYznnE4xznOsbRum2Hn1772tcFES7F22ZoImDQvetGLDh/84AeHs571rBMIj33sY4c3vvGNCwwRQ+K9731vOofGTAk988xnPnP48Ic/PJzvfOfL3Re+8IXTKD3CEY4wMFiMwb333nt4znOeMxz84AdPo8Q9GbR/+ctf0mg2tl/+8pfn2KavTLIcz1Oe8pTDXe9615z4H/GIR2T53/jGNwYGtAl+TxR1u/GNbzx89atfzepd7WpXS0eBzuWMM+qvfe1rT/+Sno7DALbORNuuf//738n+MvjXM2458HTYgSXf/OY3B/1or7322ulbep7LWEp9AanhuR7ykIdcKA8ZsX379uxjT3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" />

 4> 登录代码所需方法

iOS学习42即时通信之XMPP1

 5> 注册代码所需方法

 iOS学习42即时通信之XMPP1

  XMPPManager.m

#import "XMPPManager.h"static XMPPManager *xmppManager = nil;// 枚举记录状态typedef NS_ENUM(NSUInteger, ConnectToServerPurpose) {  ConnectToServerPurposeLogin,  ConnectToServerPurposeRegister};// 遵循协议@interface XMPPManager () <XMPPStreamDelegate>/// 用户名@property (nonatomic, copy) NSString *username;/// 密码@property (nonatomic, copy) NSString *password;/// 记录当前的状态,判断是登录还是注册@property (nonatomic) ConnectToServerPurpose connectToServer;@end@implementation XMPPManager+ (XMPPManager *)shareXMPPManager{  static dispatch_once_t onceToken;  dispatch_once(&onceToken, ^{    xmppManager = [XMPPManager new];  });  return xmppManager;}#pragma mark - 1.创建通道- (instancetype)init{  self = [super init];  if (self) {    //初始化对象    self.xmppStream = [XMPPStream new];        // 设置服务器    [self settingUpServer];  }  return self;}// 设置服务器- (void)settingUpServer{  // 设置opfire服务器  self.xmppStream.hostName = kHostName;  // 设置服务器端口号  self.xmppStream.hostPort = kHostPort;  // 添加代理  [self.xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];}#pragma mark - 登录的方法- (void)loginWithUsername:(NSString *)username         password:(NSString *)password{  self.username = username;  self.password = password;    // 记录登录状态  self.connectToServer = ConnectToServerPurposeLogin;    // 连接服务器  [self linkServer];}#pragma mark - 注册的方法- (void)registerWithUsername:(NSString *)username          password:(NSString *)password{  self.username = username;  self.password = password;  // 记录注册状态  self.connectToServer = ConnectToServerPurposeRegister;    // 连接服务器  [self linkServer];}#pragma mark - 连接服务器- (void)linkServer{  // 要连接服务器,要有用户身份认证  // 身份证  // 参数1:用户名  // 参数2:域名  // 参数3:资源  XMPPJID *jid = [XMPPJID jidWithUser:self.username domain:kDomin resource:kResource];    self.xmppStream.myJID = jid;    // 如果当前聊天工具处于连接状态或已经连接,此时,你需要去切断连接【此逻辑不唯一】  if ([self.xmppStream isConnected] || [self.xmppStream isConnecting]) {    // 断开连接    [self disConnectToServer];  }    // 设置连接超时  NSError *error = nil;  [self.xmppStream connectWithTimeout:30 error:&error];  if (error) {    NSLog(@"连接超时");  }  }#pragma mark - 断开连接(自己写的)- (void)disConnectToServer{  // 当前用户不可用(下线了)  XMPPPresence *presence = [XMPPPresence presenceWithType:@"unavailable"];  // 告诉通道用户不可用(下线了)  [self.xmppStream sendElement:presence];  // 使用通道失去连接  [self.xmppStream disconnect];}#pragma mark - XMPPStreamDelegate协议方法#pragma mark 连接超时- (void)xmppStreamConnectDidTimeout:(XMPPStream *)sender{  NSLog(@"连接超时");}#pragma mark 连接成功- (void)xmppStreamDidConnect:(XMPPStream *)sender{  NSLog(@"连接成功");    // 认证密码//  [self.xmppStream authenticateWithPassword:self.password error:nil];    // 区分登录和注册进行密码验证  switch (self.connectToServer) {    case ConnectToServerPurposeLogin:      // 登录认证      [self.xmppStream authenticateWithPassword:self.password error:nil];      break;          case ConnectToServerPurposeRegister:      // 注册的认证      [self.xmppStream registerWithPassword:self.password error:nil];      break;          default:      break;  }}#pragma mark 断开连接- (void)xmppStreamDidDisconnect:(XMPPStream *)sender withError:(NSError *)error{  // 1. 自己动手断开  // 2. 被动断开  if (error) {    NSLog(@"断开连接,error == %@", error);  }}#pragma mark 认证失败- (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(DD)error{  NSLog(@"认证失败:error = %@", error);}#pragma mark 认证成功- (void)xmppStreamDidAuthenticate:(XMPPStream *)sender{  // 当前用户可用(上线了)  XMPPPresence *presence = [XMPPPresence presenceWithType:@"available"];  // 告诉通道用户可用(上线了)  [self.xmppStream sendElement:presence];    NSLog(@"认证成功");}@end

  • 登录界面

  LoginViewController.m

#import "LoginViewController.h"#import "XMPPManager.h"@interface LoginViewController ()/// 用户输入框@property (weak, nonatomic) IBOutlet UITextField *usernameTextField;/// 密码输入框@property (weak, nonatomic) IBOutlet UITextField *passwordTextField;@end@implementation LoginViewController- (void)viewDidLoad {  [super viewDidLoad];  // Do any additional setup after loading the view.}- (void)didReceiveMemoryWarning {  [super didReceiveMemoryWarning];  // Dispose of any resources that can be recreated.}- (IBAction)loginAction:(UIButton *)sender{  [[XMPPManager shareXMPPManager] loginWithUsername:self.usernameTextField.text password:self.passwordTextField.text];}@end

  • 注册界面

   RegisterViewController.m

#import "RegisterViewController.h"#import "XMPPManager.h"@interface RegisterViewController () <XMPPStreamDelegate>@property (weak, nonatomic) IBOutlet UITextField *registerUNTextField;@property (weak, nonatomic) IBOutlet UITextField *registerPWTextField;@end@implementation RegisterViewController- (void)viewDidLoad {  [super viewDidLoad];  // Do any additional setup after loading the view.    // 添加代理  [[XMPPManager shareXMPPManager].xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];}- (void)didReceiveMemoryWarning {  [super didReceiveMemoryWarning];  // Dispose of any resources that can be recreated.}// 按钮点击事件- (IBAction)registerAction:(id)sender{  [[XMPPManager shareXMPPManager] registerWithUsername:self.registerUNTextField.text password:self.registerPWTextField.text];}#pragma mark - XMPPStreamDelegate实现协议方法// 注册成功后,dismiss到登录界面- (void)xmppStreamDidRegister:(XMPPStream *)sender{  NSLog(@"注册成功");  [self dismissViewControllerAnimated:YES completion:nil];}// 注册失败- (void)xmppStream:(XMPPStream *)sender didNotRegister:(DD)error{  NSLog(@"注册失败:%@", error);}@end

 




原标题:iOS学习42即时通信之XMPP1

关键词:IOS

IOS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

海运菲律宾到上海:https://www.goluckyvip.com/tag/96472.html
上海海运到菲律宾:https://www.goluckyvip.com/tag/96473.html
菲律宾到上海:https://www.goluckyvip.com/tag/96474.html
北京到菲律宾快递:https://www.goluckyvip.com/tag/96475.html
深圳菲律宾海运:https://www.goluckyvip.com/tag/96476.html
重庆快递到菲律宾:https://www.goluckyvip.com/tag/96477.html
丽人丽妆2023年扭亏为盈 玉容初、美壹堂等自有品牌增速超40% :https://www.kjdsnews.com/a/1836576.html
一天拿下10万美金预售!深圳大卖出海第一年成为亚马逊供应商:https://www.kjdsnews.com/a/1836577.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流