{ "metadata": { "name": "noti98" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# CC98\u65b0\u5e16\u63d0\u9192" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.display import Image, display\n", "display(Image(filename='noti98.png', embed=True))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "**\u91cd\u8981**: \u8bf7\u5148\u4e0b\u8f7d\n", "\n", "* \n", "* \n", "\n", "\u5e76\u5b89\u88c5.\n", "\n", "## \u6293\u53d6\u65b0\u5e16\u5217\u8868" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import urllib2\n", "print urllib2.urlopen('http://www.cc98.org/queryresult.asp?stype=3').read()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\r\n", "\r\n", "\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\u641c\u7d22\u7ed3\u679c » CC98\u8bba\u575b\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t
\r\n", "\r\n", "\t\t\t\t\r\n", "\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t
\r\n", "\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t
\r\n", "\t\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\t
\r\n", "\t\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t
\r\n", "\t\t\t\t\t\t\t\t\t\t\u52a0\u5165\u6536\u85cf
\r\n", "\t\t\t\t\t\t\t\t\t\t\u8bbe\u4e3a\u9996\u9875
\r\n", "\t\t\t\t\t\t\t\t\t\t\u641c\u7d22\u7248\u9762
\r\n", "\t\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t
\r\n", "\t\t\t\t\t\t
\r\n", "\t\t\t\t\t\t\t
\r\n", "\t\t\t\t\t\t\t\t
\r\n", "\t\t\t\t\t\t\t\t\t  \r\n", "\t\t\r\n", "\t\t\t\t\t\t\t\t\t\u672a\u767b\u5f55  \r\n", "\t\t\t\u6ce8\u518c\u767b\u5f55\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\u8bba\u575b\u641c\u7d22\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\u8bba\u575b\u72b6\u6001\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\u8bba\u575b\u9644\u4ef6\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\u8bba\u575b\u5e2e\u52a9\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\tSimple\u7248\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t
\r\n", "\t\t\t\t\t\t\t\t
\r\n", "\t\t\t\t\t\t\t
\r\n", "\t\t\t\t\t\t
\r\n", "\r\n", "\t\t\t\t\r\n", "\t\t\t
\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t
\r\n", "\t\t\t\t
\r\n", "\t\t\t\t>> \r\n", "\t\t\u6b22\u8fce\u5149\u4e34 www.cc98.org\r\n", "\t\t\t
\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t
\r\n", "\t\t\t\t\r\n", "\t\t\t\t\r\n", "\t\t\t\t\r\n", "\t\t\t\twww.cc98.org \u2192 \r\n", "\t\t\t\t\u8bba\u575b\u641c\u7d22 \u2192 \u641c\u7d22\u7ed3\u679c\r\n", "\t\t\t\t\r\n", "\t\t\t
\r\n", "\t
\r\n", "\t\r\n", "
\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "\t\r\n", "\t\t\r\n", "\r\n", "\t\r\n", "\t\t\r\n", "\t\r\n", "\r\n", "\t\r\n", "\r\n", "\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\t\t\r\n", "\r\n", "\t\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "
\r\n", "\t\t\u8bba\u575b\u9519\u8bef\u4fe1\u606f\r\n", "\t
\r\n", "\t\t\t\u4ea7\u751f\u9519\u8bef\u7684\u539f\u56e0\uff1a\r\n", "\t\t\t
  • \u60a8\u6ca1\u6709\u5728\u672c\u8bba\u575b\u641c\u7d22\u7684\u6743\u9650\uff0c\u8bf7\u767b\u5f55\u6216\u8005\u540c\u7ba1\u7406\u5458\u8054\u7cfb\u3002\r\n", "\t\t\t
    \r\n", "\t\t\t
    \r\n", "\t\t\t\u8bf7\u60a8\u4ed4\u7ec6\u9605\u8bfb\u4e86\r\n", "\t\t\t\u5e2e\u52a9\u6587\u4ef6\uff0c\r\n", "\t\t\t\u53ef\u80fd\u60a8\u8fd8\u6ca1\u6709\u767b\u5f55\u3002\u5982\u679c\u6709\u4efb\u4f55\u95ee\u9898\u8bf7\u8054\u7cfb\u7ad9\u52a1\u7ec4\u3002\r\n", "\t\t\t\r\n", "\t\t
  • \r\n", "\t\t\t\u8bf7\u8f93\u5165\u60a8\u7684\u7528\u6237\u540d\u3001\u5bc6\u7801\u767b\u5f55\r\n", "\t\t
    \u8bf7\u8f93\u5165\u60a8\u7684\u7528\u6237\u540d\r\n", "\t\t\t\t\r\n", "\t\t\t\t  \u6309\u8fd9\u513f\u6ce8\u518c,\u52a0\u5165\u6211\u4eec\u5427\r\n", "\t\t\t
    \u8bf7\u8f93\u5165\u60a8\u7684\u5bc6\u7801\r\n", "\t\t\t\t\r\n", "\t\t\t
    \r\n", "\t\t\t\t\u9690\u8eab\u767b\u5f55
    \r\n", "\t\t\t\t\u60a8\u53ef\u4ee5\u9009\u62e9\u9690\u8eab\u767b\u5f55\uff0c\u8bba\u575b\u4f1a\u5458\u5c06\u5728\u7528\u6237\u5217\u8868\u770b\u4e0d\u5230\u60a8\u7684\u4fe1\u606f\u3002\r\n", "\t\t\t
    \r\n", "\t\t\t\t\u6b63\u5e38\u767b\u5f55
    \r\n", "\t\t\t\t\u9690\u8eab\u767b\u5f55
    \r\n", "\t\t\t\t\r\n", "\t\t\t
    \r\n", "\t\t\t\t  \r\n", "\t\t\t\r\n", "\t\t\t
    \r\n", "\r\n", "\t
    Copyright © 2003-2013 CC98 Network Association. Email: contact@cc98.org
    \r\n", "\t\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "\n" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "\u51fa\u9519\u4e86, \u56e0\u4e3a\u6211\u4eec\u8fd8\u6ca1\u6709\u767b\u5f55. \u5982\u679c\u7528\u6d4f\u89c8\u5668\u67e5\u770b, \u4f1a\u8fd4\u56de\u5982\u4e0b\u7ed3\u679c:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "display(Image(filename='login.thumbnail.jpg', embed=True))" ], "language": "python", "metadata": {}, "outputs": [ { "jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a\nHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy\nMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAGQAoADASIA\nAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA\nAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3\nODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm\np6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA\nAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx\nBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK\nU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3\nuLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDsYLa3\nNlEfIiz5S/8ALMf3fpVm1062lhhVbOBnKDH7lT2+lR2//HjF/wBcl/8AQa0tIkEUls56LHk/98V6\nuJbjRco72PIo+9USe1yE6PEuwNYRL+73OxtxtDf3Rxk/XA6dqhOn2yrGzWNsFkGV+RM+vIxkfjW3\nc6yvWF9645KxMQD6dazZb4XflkOrfMeVGMcGvIpVsXGpFVLNXSe3Xy3O6ccPKL5d7efQxdQs7VRL\ni1gHKdIl9G9q1tVGl6VYzXk1hblI/wCFYEyx9BxWfqPSX6x/yarXiqB5tLLIpZY5NzgDPy4IP869\nPFNwpylBapHHCfL7zV0unc52LXpJ4xPB4dtpISeNttnI+uP6V1enw2F9axXH9mRQlusctuoZT6Hi\nuT0WIvqsE0VxttoUBMeOmF24znpXa2RLpv8A4WYbfceteNh8XKWMVCEueLjzSdvhfRfM9bEVcPXw\n/taVLktKy1eq8/Q5sWVqGtMWsAyy5/dLz8qe1UvFkiaZp0EltFDEWkbeywITtWNmwMjH8Nag+9Z/\n76/+gR1jePtv9k2gZ1QNO6bmOAMxOOfzr3XpTbR5a1qJM4A+OJfIM4huvKDBS5gt8biM4zt64rpf\nBOtSa5q4jmSN7dreVtksEWQyMgzlV/2jXFwaRPDAsMN7YbQ+4TB84OAD+HA7dq6b4cwJa+JVt0uI\nZsWk7FomyBl4sfyrlpTm5pSN5xXK9D0OSytf7SiX7LBjYePKX/a9qW8tYY1hEVtaqXlWMsbdWI3c\nDA474/CpZP8AkKQ/7h/9mqHU7Pz7zS7jzXX7PeIdn8LZ459x2P19a66ukG4o5IazSOfa6uW8Yf2V\na2sE8UcKm4b7HGoizzv6+hUckZzgAnFbemLa3yTSLb2s1ur7YrhYEUSY4bAGeARjPfn0rlPEusm5\nkuLDSJIo45ZAl5cKCDK6rjZvAJwBsX6vjvWn8P7D7Hpt25nMhlmztjYmEADgpkDJIwScc8Y9a4cL\nObquMtVv0+43rQ5L2Wnf9NzfW0thPOBbQgZXgRr/AHR7U/7Lb/8APvD/AN+x/hTx/wAfE/1X/wBB\nFOr1UlY423ci+y2//PvD/wB+x/hR9lt/+feH/v2P8Klop2Qrsi+y2/8Az7w/9+x/hR9lt/8An3h/\n79j/AAqWiiyC7Ivstv8A8+8P/fsf4UfZbf8A594f+/Y/wqWiiyC7Ivstv/z7w/8Afsf4UfZbf/n3\nh/79j/CpaKLILsi+y2//AD7w/wDfsf4UfZbf/n3h/wC/Y/wqWiiyC7Ivstv/AM+8P/fsf4UfZbf/\nAJ94f+/Y/wAKloosguyL7Lb/APPvD/37H+FH2W3/AOfeH/v2P8KloosguyL7Lb/8+8P/AH7H+FH2\nW3/594f+/Y/wqWiiyC7Ivstv/wA+8P8A37H+FH2W3/594f8Av2P8KloosguyL7Lb/wDPvD/37H+F\nH2W3/wCfeH/v2P8ACpaKLILsi+y2/wDz7w/9+x/hR9lt/wDn3h/79j/CpaKLILsi+y2//PvD/wB+\nx/hR9lt/+feH/v2P8KloosguyL7Lb/8APvD/AN+x/hR9lt/+feH/AL9j/CpaKLILsi+y2/8Az7w/\n9+x/hR9lt/8An3h/79j/AAqWiiyC7Ivstv8A8+8P/fsf4UfZbf8A594f+/Y/wqWiiyC7Ivstv/z7\nw/8Afsf4UfZbf/n3h/79j/CpaKLILsi+y2//AD7w/wDfsf4UfZbf/n3h/wC/Y/wqWiiyC7Ivstv/\nAM+8P/fsf4UfZbf/AJ94f+/Y/wAKloosguyL7Lb/APPvD/37H+FH2W3/AOfeH/v2P8KloosguyL7\nLb/8+8P/AH7H+FH2W3/594f+/Y/wqWiiyC7Ivstv/wA+8P8A37H+FH2W3/594f8Av2P8Kloosguy\nL7Lb/wDPvD/37H+FH2W3/wCfeH/v2P8ACpaKLILsi+y2/wDz7w/9+x/hR9lt/wDn3h/79j/CpaKL\nILsi+y2//PvD/wB+x/hR9lt/+feH/v2P8KloosguyL7Lb/8APvD/AN+x/hR9lt/+feH/AL9j/Cpa\nKLILsiFpAelvEf8AtmP8KZJDbRpuNtGeQAFiBJpt5p1rfvbvcRszW8nmR4crz74PI9jxxUtyjvDi\nP7+QRzipa0dkNPVXYjW1ukpikto45R1R4grD8CKQw2oJHkQ8EBiIxhc9M8cZxUYjuXvzJMWc7y7T\nvKWMgwQq7exXPXvVk7/IkgG0pJMs2e6lQePcHNZQnUlG7hZ3t/wToq06cJJRndNX+fYjFvbMMiCE\nj/rmP8KhVrJtuIIsNjHyp36cdfwxkd8VZjQomM85JqILN9jgg8qINGwYyA9emeMccKvI5ODn7xq5\n8ytZeplHld7v0H/Zbf8A594f+/Y/wqvfLb2tjNN5UKFV4YwhsHoOOP51Ne3AtbOWcvGmwcGT7ueg\nzj3rNt9ZuJZQpjt1HmBGKuTsyr9T0zlM9uCPrVPlWhCu9SrJqDRw3eyxgnlRAY/Jg3ANtBOcckA/\nQ9OORV7SpFvknaayijZJNoXygMDsD7+v1qM63KbK1lEa+ZK2DuDBGOTwh7k/U/j1qcahcLZGV0jd\nw4wyqwRkLhcg8845xn0qVa5TvYu/Zbf/AJ94f+/Y/wAKiuba3FpMRBF/q2/5Zj0PtTNNvjqEU0nl\nmMJM0YDKQcDGCQQOeasXX/HpP/1zb+Rq9Grk3adh1hYX106WkMltkR8syNgADGTz9KqwX1vLEY4d\nf0aURJ82xJTgAYycHiuu8NW2LOa7brOdqH/ZH+Jz+lcauma0tqiNokrStEVkKfKoyMBBnoB1yMEH\nODgmuKdTmm4p6L0/U7qdFKCk1qzd/wCEa1OIBTd6WN54DLJ8xx/vU2LwzqEDMUu9KDKPmJEhIH/f\nXFL4g8JXmqawl7bvEACm8M4XeqgZXheDweST0FVofA11Hqd7eJJBCblyVKuxaMZBHPccEEY5z19O\nRVpXv+iOj2FPsSX3hzUVRmudT0qBXIAZ1dRkA8ct71pJpWtzIJI7nSXRxkMqSEEfXdWPN8P7i7sJ\nrWW6hj3zCfepLndggjkDA59/xrqtP025sNP060iu1RLXKyAICJV7Dtj/AD1o9vN7sPYQWyMIeFr6\nOR5FXREYnLkRSDn3+arf9la4vP2nSQB/sSf/ABVWX0afL/u7KbFwZf3oP78HdxJweV3cdenQdqb+\nGLj7S8yTQgF5GQDKlQRgcheSe5647tjFSqklsU6UNikPCurAoTf6Z+5YfwP1Crwfm9Bn8aj1TwNd\n69Zrb30mmzwq4ddvnLhhkZBVge5q+/h7UHjlGbXd5u9CZGw3DDJ45OGHL7unTtW7oltcWGmJb3Ri\nMis3MWApBPHAVQPyq/bzta4vYwvex52fg5bN96O0P1uLr/45V3SPhidCu3utOTTop3Qxl2M7nbkE\nj5nPoK9H31mzWE8mtRXy3jLCi4a3GdrnB5PPUZ47dc54xKqyWqG6UXo/zOKntdRi1Jlka286H5Cq\nxuQeDz19DSyw300TRSx2zxuMMrQOQR+db/iaL7NeW2oLwrfupO3I5H5jI/KqP9o2v/PQ/ka7o1JS\nimlc4ZUoxk03Y51tCga++1tZad54j8rmF8BeP4d2M8AZxnAHPFXYIbi2QpbpYxITkqkLKM/g1Xbi\n4glkDJIOmDnj6VF5if30/wC+hXRCKavaxhOTTte5CqXe93aS3yxB4Ruwx607bdf34P8Avhv8ak8x\nP76f99CjzE/vp/30K0sZ3I9t1/fg/wC+G/xo23X9+D/vhv8AGpPMT++n/fQo8xP76f8AfQosFyPb\ndf34P++G/wAaNt1/fg/74b/GpPMT++n/AH0KPMT++n/fQosFyPbdf34P++G/xo23X9+D/vhv8ak8\nxP76f99CjzE/vp/30KLBcj23X9+D/vhv8aNt1/fg/wC+G/xqTzE/vp/30KPMT++n/fQosFyPbdf3\n4P8Avhv8aNt1/fg/74b/ABqTzE/vp/30KPMT++n/AH0KLBcj23X9+D/vhv8AGjbdf34P++G/xqTz\nE/vp/wB9CjzE/vp/30KLBcj23X9+D/vhv8aNt1/fg/74b/GpPMT++n/fQo8xP76f99CiwXI9t1/f\ng/74b/Gjbdf34P8Avhv8ak8xP76f99CjzE/vp/30KLBcj23X9+D/AL4b/Gjbdf34P++G/wAak8xP\n76f99CjzE/vp/wB9CiwXI9t1/fg/74b/ABo23X9+D/vhv8ak8xP76f8AfQo8xP76f99CiwXI9t1/\nfg/74b/Gjbdf34P++G/xqTzE/vp/30KPMT++n/fQosFyPbdf34P++G/xo23X9+D/AL4b/GpPMT++\nn/fQo8xP76f99CiwXI9t1/fg/wC+G/xo23X9+D/vhv8AGpPMT++n/fQo8xP76f8AfQosFyPbdf34\nP++G/wAaNt1/fg/74b/GpPMT++n/AH0KPMT++n/fQosFyPbdf34P++G/xo23X9+D/vhv8ak8xP76\nf99CjzE/vp/30KLBcj23X9+D/vhv8aNt1/fg/wC+G/xqTzE/vp/30KPMT++n/fQosFyPbdf34P8A\nvhv8aNt1/fg/74b/ABqTzE/vp/30KPMT++n/AH0KLBcj23X9+D/vhv8AGjbdf34P++G/xqTzE/vp\n/wB9CjzE/vp/30KLBcj23X9+D/vhv8aNt1/fg/74b/GpPMT++n/fQo8xP76f99CiwXI9t1/fg/74\nb/Gjbdf34P8Avhv8ak8xP76f99CjzE/vp/30KLBcj23X9+D/AL4b/Gjbdf34P++G/wAak8xP76f9\n9CjzE/vp/wB9CiwXI9t1/fg/74b/ABo23X9+D/vhv8ak8xP76f8AfQo8xP76f99CiwXI9t1/fg/7\n4b/Gjbdf34P++G/xqTzE/vp/30KPMT++n/fQosFyPbdf34P++G/xo23X9+D/AL4b/GpPMT++n/fQ\no8xP76f99CiwXI9t1/fg/wC+G/xo23X9+D/vhv8AGpPMT++n/fQo8xP76f8AfQosFyPbdf34P++G\n/wAaNt1/fg/74b/GpPMT++n/AH0KPMT++n/fQosFyPbdf34P++G/xo23X9+D/vhv8ak8xP76f99C\njzE/vp/30KLBcj23X9+D/vhv8aiaS6W4iizAd6sc7W4xj396s+Yn99P++hVW4k2XVvKqmRVVwwQq\nSM7cdSPQ0mhpkxS5IwWtyPdG/wAaqyXb28d1JcS2kMFvgvI6kDBUHJ598VnQadBBqp1FZtceQuz+\nTJe7ofmzxsLYwM8DtxU19CmpWmoWk8N0kV1s+eMx7hgLyMsR1WpbZVkPstZi1KznuLC4t50gUk4j\nYDIBIA59j9Kzh4ouSAfs0HI9Wq1Z2cen2l8kaXk9xeM8kss3lAu7A9lIAHPYVirpN+FANqeB/wA9\nE/8Aiq8/GTxMeX2V/OyuevllLBT5/rNulru3r1LMfjbzrlrdFtWnXO6MM25cYzn06irA8Q3NyRbm\nCBRMRHuyxxuOM/rWLF4auob6W8WCczSjEha4Qhh2GN2OO3pk1et9Lvlu4Ga3IVZUYkyJwAwJ/irl\njVxrkk7206f8A9CeHyxU5NON9be9626ns1ze29jaSXFxKkNvEu53bgKKfDcLPbxzoG8uRQ6llKkg\njI4PIrF17SYde0t7OZ2Q7g8bj+Fx0JHcc9KTSNGtNHj3QoRPIirMwlkZWI7gMxxzmkcRutLtUsc4\nAycDNIk6yIHRgVIyCKozxRzjLDLAEKSTx+RpYEWCLYpz3J9TQBDqHiXT9NuTbzG4kkRBJKIIGkEK\nH+JyB8oq9Z6hBqFnFd20m+CVdyPgjcM4zz9K56+0zUPtl7LYPYPDfqgnjvY2YKyjaGAH3hjHyn0r\nZt0W2to4UCKEULhECr+AHTntQAlxr1hbalHpzz5vJAGWFAWbBIGf1z9AT0FXy7MVVGALHGSM4/zi\nuFn8IyzaxNfg2+99SjuVYu24RAfMv1zj/GuzikHnoWIADZJ/A0AH2gidYmuAhZiis0QAYjsOas+T\nP/z8J/37/wDr1QcSlnjCwlDLuDmUcDdnOMVV1bQoNU1JbsaiIQAoaNRncQSGJOe8bOn/AALPagDZ\n8mf/AJ+E5/6Z/wD16QxTKMm5QD1Mf/165n/hE4laRo9X2seYjsz5RDfIR838MYCe/J9qsReHo7e3\nt4I7+3ligm81Y54t6sMFFVhu52ptAPque+AAal3cwQSR291fQBpjtVGiznkDnnjkgc9yPWorRLG+\nhaW2ltJI1OGYWwGOM9+2CCD3BrMHhmBoYIXvLceXJlpokZJZV3BvnIbDMSoySD9BSQeHHgs/s7ap\nbSqJVlKSQlkcqoUbgW5BHOOgOMYAwWmDSNw6dGDg/ZQf+vdaQWEJdkH2UsuAR9nXjNc1qHhcLYeT\naS29zLJmNmnRcAGJUDHLZyu3IxnG4jHet25sxNGGE8DS5JYNyMkggg9iAoGaLsVkWv7NQdRa/wDg\nOtH9mp6Wv/gOtVG06N3QveRsqEALyBgZ64PXnrR/Z0Jfy/OjEIT5unzvu64+hI/H2ouwsi3/AGbH\n6Wv/AIDrTHsoI2Cu1opIyM26juB/Mj86g/s2AOzC6j3GXeGOSQMk4wTjvjpQNPj2ESXcLnCgApx8\nuzGRn/Y/Wi7CyLR02MZyLXjr/o60yWyggjLyfZgo6n7MDj8qhnsFuJ5JXvYSzLtHycD7p9ecY7+v\nNLb2aKZDJPANzNwoxuBfd83PPHHtk0XYWRN9gh3Bc2m5uQPIXJ/X3p39mp6W3/gOtVJrFB5kkU8B\nkJcxjABUtgg5J7EA/pTf7MjYyr9piRT91lHzN8qg5OehIPFF2FkXf7NTbuxbY65+zLTIbGGdN8f2\nZhnH/HsBg+hFOht4YfKK3QUxrgKGO3PPqc96lshFawlGuEcli3B4GfqSfzNF2FkM/stf7tt/4DLR\n/Za/3bb/AMBlq39oh/56p+dH2iH/AJ6p+dF2FkVP7LT+7bf+Ay0f2Wv922/8Blq39oh/56p+dH2i\nH/nqn50XYWRU/stf7tt/4DLR/Zaf3bb/AMBlq39oh/56p+dH2iH/AJ6p+dF2FkVP7LX+7bf+Ay0f\n2Wv922/8Blq39oh/56p+dH2iH/nqn50XYWRU/stf7tt/4DLR/Za/3bb/AMBlq39oh/56p+dH2iH/\nAJ6p+dF2FkVP7LX+7bf+Ay0f2Wn922/8Blq39oh/56p+dH2iH/nqn50XYWRU/stf7tt/4DLR/Za/\n3bb/AMBlq39oh/56p+dH2iH/AJ6p+dF2FkVP7LT+7bf+Ay0f2Wv922/8Blq39oh/56p+dH2iH/nq\nn50XYWRU/stf7tt/4DLR/Za/3bb/AMBlq39oh/56p+dH2iH/AJ6p+dF2FkVP7LX+7bf+Ay0f2Wn9\n22/8Blq39oh/56p+dH2iH/nqn50XYWRU/stf7tt/4DLR/Za/3bb/AMBlq39oh/56p+dH2iH/AJ6p\n+dF2FkVP7LX+7bf+Ay0f2Wn922/8Blq39oh/56p+dH2iH/nqn50XYWRU/stf7tt/4DLR/Zaf3bb/\nAMBlq39oh/56p+dH2iH/AJ6p+dF2FkVP7LX+7bf+Ay0f2Wv922/8Blq39oh/56p+dH2iH/nqn50X\nYWRU/stP7tt/4DLR/Za/3bb/AMBlq39oh/56p+dH2iH/AJ6p+dF2FkVP7LX+7bf+Ay0f2Wv922/8\nBlq39oh/56p+dH2iH/nqn50XYWRU/stf7tt/4DLR/Za/3bb/AMBlq39oh/56p+dH2iH/AJ6p+dF2\nFkVP7LT+7bf+Ay1zdx4m0K21NrFnRij7HmSx3RKe+WHpg5+h9K6/7RD/AM9U/OvObvwZrZv5YLLX\nbOLSpZGYsVPnorFiwHGCfnbB96zqSmkuU6cPCjJv2un9ej+7r3Oznt7a3iDsbVsj5FW3TL56Ac85\npYobaSJZUW1cZG5fIUFc+voadLGsP2U2jRM8S+WWeTHygcZ9ecGkjBCTyzGPz3kHKPu+UYwPYZzW\nl2c1kQ3d3o1g6JeSafbu4yqy7FLD1GaW0udHv9/2N7C42Y3+SEbbnpnHSuf8Q6FPqurW17EkT+Tb\ntEhM7QyRSFwwdGCtyMEY96k8N6JLo95fzvHDEtykShUmaVmZd252YqMklqu0eW99Sdb2sXtb1jTd\nCt5ri6s4PKiUMSFXc2c8KuOTxTtG1bTNci860trdosH5gg4IIBBBUEHkVn+JNAtdf+S8tppPK2yQ\nPEQNrgMMHJ6cimeE9KudIhkS4jZCxZsFgwXOwBQep4X09OtRdlWRsaxfWWj2ZuZNPWWNfv8AlxJ8\no9Tml0m9sdWgmkjsEiaGUxOkkS5BwD2HoRVXXbSW/t4o4VJbzBuPykbe+Qeop2iadLpcN0Jp0mlu\nblp2KJsUZAGAMnsKlOd3fbpuSlLmd9hdS1Wz067a3GleeyQG4do41wqA4JPHbFO0zUbTUbqW3bSx\nbyRxrLiSNeVbp2qDULOaa/mmjiDpNZtasS2NoJ5NP0+2mi1Ka6liEe6COEANnO3vXAq9b6xy62v2\n0t6npOGG9he3vW3v19Cpr3iWy0TVbfTY9Ee+upoGnCQJGPlXOevU8HgVL4d1+x8QXGoW39kfZLmw\ndUmjlSNsE57rx2NY3ijTPEknia11bQVtpAlo0DpLOI/m3EqenIBOePSpvB2l63Y6lrN/rSwxveNH\n5Ucc3m7FXdxnA/vfWu1SnzeRMoYf6vdJc1l11vfXTbY6HVtR0rRoElureM7zhESFSzetS6bc6Zqt\nmt1awQlCSCGhUFSOxGKz/EGjR63aopkMc0OTGwGc5HQ/XAqTQNO/sfSktmYNKxLyEdNx7D2GMVKl\nV9rZ/CeYuf2lre6S32o2Fjdi3axhZtqkttQAZ3YHT/Yb8qXTtQ07UZpIo7SFXRA5BjU8Hp2rC8Q6\ndeXmqPJHpxvLeS2RAFnEe11Zj1znoxH41N4atdTtryeS+tFtozEFULKH3Nuz/Ktrs9F0qPseZb+q\n/I376fTdNgE1zbLsLBR5dqZDn6KpNNsLnTNTieS2tl2o20+baGM5+jKM1U1yxl1SwW3heFWEgfMp\nkAwAf+ebKe/rimaDp02k2ssUzwMXfcDCZSOmOfMZj+VF2cdkb39mx/8APWb/AL6H+FcfrK+JY9Xu\nI9L3NaJtCkojHO0E8keprvar23+suf8Arr/7KtVCXLd2uKSvpc88/wCK1/uN/wB+k/wo/wCK1/uN\n/wB+k/wr0usTV9Y+ySNGkoiWPaHk8suxZskIqjqcAk+grWNTmdlFEOFt5M4//itf7jf9+k/wo/4r\nX+43/fpP8K3I/EMs0nlRXtwJmVigls9gYqpbGSPQV1yHcgPqM1U5cm8UKMb7SZ5r/wAVr/cb/v0n\n+FGfGv8Acb/v0n+Fel0Vn7Zfyor2b/mZ5pnxt/db/v0n+FGfG391v+/Sf4V6XRR7ZfyoPZv+Znmm\nfG391v8Av0n+FGfG391v+/SV6XRR7ZfyoPZv+ZnmmfG391v+/SUZ8bf3W/79J/hXpdFHtl/Kg9m/\n5meaZ8bf3W/79J/hRnxt/db/AL9J/hXpdFHtl/Kg9m/5meaZ8bf3W/79JRnxt/db/v0n+Fel0Ue2\nX8qD2b/mZ5pnxt/db/v0n+FGfG391v8Av0n+Fel0Ue2X8qD2b/mZ5pnxt/db/v0lGfG391v+/SV6\nXRR7ZfyoPZv+ZnmmfG391v8Av0n+FGfG391v+/Sf4V6XRR7ZfyoPZv8AmZ5pnxt/db/v0n+FGfG3\n91v+/SV6XRR7ZfyoPZv+ZnmmfG391v8Av0n+FGfG391v+/Sf4V6XRR7ZfyoPZv8AmZ5pnxt/db/v\n0n+FGfG391v+/Sf4V6XRR7ZfyoPZv+ZnmmfG391v+/SUZ8bf3W/79J/hXpdFHtl/Kg9m/wCZnmmf\nG391v+/Sf4UZ8bf3W/79J/hXpdFHtl/Kg9m/5meaZ8bf3W/79JRnxt/db/v0n+Fbl742XTZtRuLm\n1Mmm28620TwkeY8gHzkhmA2BsLkdwau+G/GFh4jkuII9sN1A5UwtMjlwP4l2k7l5HPSoWKg3blVz\nolgK8Ye0d7HLZ8bf3W/79J/hRnxt/db/AL9J/hXpdcT4s8a3HhvUjD5UckZjUxoI33SOc8M5wiLx\n23E+g605YiMVdxRFHCVK8+SDdzKz42/ut/36T/CjPjb+63/fpK7nQmmk0a3nuLiSeWZfNLSBBjdz\ngBSRgdByeO5rSqlWTV+VGcqLjJx5noeaZ8bf3W/79J/hRnxt/db/AL9J/hXQz+MorPVL21mhaXZO\nIbWOFfmkICbyWYhR8z4GSOhq34X8TJ4mtZblIUgjDfu4zOryFem5lH3eQcCpWJg3blRtLA1ow53e\n2n4nJ58bf3W/79J/hRnxt/db/v0lel0VXtl/KjD2b/mZ5pnxt/db/v0lGfG391v+/Sf4V6XRR7Zf\nyoPZv+ZnmmfG391v+/Sf4UZ8bf3W/wC/Sf4V6XRR7ZfyoPZv+ZnmmfG391v+/SUZ8bf3W/79J/hX\npdFHtl/Kg9m/5meaZ8bf3W/79J/hRnxt/db/AL9J/hXpdFHtl/Kg9m/5meaZ8bf3W/79JRnxt/db\n/v0lel0Ue2X8qD2b/mZ5pnxt/db/AL9J/hRnxt/db/v0n+Fel0Ue2X8qD2b/AJmeaZ8bf3W/79J/\nhRnxt/db/v0lel0Ue2X8qD2b/mZ5pnxt/db/AL9J/hRnxt/db/v0n+Fel0Ue2X8qD2b/AJmeaZ8b\nf3W/79J/hRnxt/db/v0lel0Ue2X8qD2b/mZ5pnxt/db/AL9JRnxt/db/AL9J/hXpdFHtl/Kg9m/5\nmeaf8Vr/AHG/79J/hR/xWv8Acb/v0n+Fel0Ue2X8qD2b/mZ5p/xWv9xv+/Sf4Uf8Vr/cb/v0n+Fe\nl0Ue2X8qD2b/AJmeaf8AFa/3G/79J/hR/wAVr/cb/v0n+Fel0Ue2X8qD2b/mZ5p/xWv9xv8Av0n+\nFH/Fa/3G/wC/Sf4V6XRR7ZfyoPZv+Znmn/Fa/wBxv+/Sf4Uf8Vr/AHG/79J/hXpdFHtl/Kg9m/5m\neaf8Vr/cb/v0n+FH/Fa/3G/79J/hXpdZOv602h28Nx9leeIyES7GUFFCMxIyRk/L0p+2X8qD2b/m\nZxX/ABWv9xv+/Sf4Uf8AFa/3G/79J/hXV2niNp5LAzW/krdM8ZXO4xspwCW6YJwOnUislvH5FrdX\nAsN8cUTOGSTIG0DOT3AJC5APJApe2X8qD2b/AJmVNMHiltTtl1AMto0gWQiNBwfcD1xXaf2bH/z1\nm/76H+Fc14Y8V3HieK6M9nDb/ZriFAY5i+4nG7ggYAPQ967LtUTkpWdrFRVtLhVOOVIFvZpDtSNy\nzH0AUE1crE1dJpNE1aOCN5JHyoRBknKrkAfTNEFd2CTsU5NdYv8AO2obyAzR2dr5ixZGQrNg5bBG\narJeborq8sBdy3SrM5WeLEgkAiXhcdl6UxdQuIy/lWeuRqzFtqwDGSc9xUMF8sbmW2tdVe4aSQyB\nEBkB+UNuHYcL+VdShbZGVyebUba6mTzm1YSxxzPELm28tCfLYHnaOxNb9xeyJdJaRyRxbIPOlkkX\ndgZwBjI9GP4VjWsV3q92nm2d9FGvDy3mBhcglUUd2wAT6ZqHVLPWJtTv2S03RTEIrCZV+QLgdT9T\n+NQ4xbsxptK5oLrU7KGVpypGQf7Pbkf99UkGs3ktrcXErpDHFN5SL9nLSOeP4d3BycY9jWeP+EpP\nC+ap7Fp4sD68VWjstfSKP/RG8xHMhkWdBlzkk85/vGq5I+Qcz8zaOsXhGIxMznhQbBhk9ud1OGq3\njWEV6zKqynCxxW7SkDnB4YcHGfxFZg/4SdlcEN9xuHnjIY4wBx9f0rOTRdWRFVba4CqABi9Uf1oV\nOHWwuZnQ3Ws3ltpTX4dGwwRYZLcxs7E4A+9x9alutRvbN1SR/MYruPkWbOB7Z3Vz8um63IlorWf7\nu3cOFe4UlyBwc57Us2n6zNOZWtZweOFvVA49s0ezh3Qc0jqba5vGvII5JInSSNpGURFGUDGM/Mec\nnp7GtSsfQra7QTXN7GI5ZCEVAwbCj3HqSf0rYrmna9kax2CiiioKCiiigAooooAKKKKACiiigAoo\nooAKKKKACiiigAooPSvBPGHiDWbbxhqsEGrX0USXBCIlwyqowOAAeKyq1VTV2jtwWCli5uEXayue\n91DdxzS2ksdvMIZmUhJSu7YfXHfFfN//AAk+v/8AQb1H/wACn/xo/wCEn1//AKDeo/8AgU/+NYfX\nI9j01kFVO/OvuZ6PD4YtriaDSI7ibeb6Znl8pJJFt434zKRlfnBxjqWPBArudF8O6fodv5dsjO3m\nPJ5s2Gky5y3zY718/wD/AAk2vD/mN6j/AOBL/wCNH/CT6/8A9BvUf/Ap/wDGs44iEdeU6a2V4mqu\nV1Fb5n0lPK0MEkixPKyKSI0xub2GSBn8a8v8TabqHibXBJDDCotQJbgeYrtAFzhCURjuPJ2jPTkd\nK89/4SfXz/zG9R/8CX/xqOHX9Ztk2QarexJnO2OdlGfXANE8TGas0GGyirh25xkr+jPcfBuoX95a\nFJp9Pu7OJFWK5tblpXLDqJNwBB6HoK2tZjaTTZMahLYKpDPPEAWCg8gZBxkcZxXzlb63q1q0rW+p\n3kJlfzJDHMy729Tg8n3qf/hJ9f8A+g3qX/gU/wDjVRxSUbNGdTJJyq88ZJfL/h1/Wx1raSYWni1O\n2vpYL+5jK3bROzTxHzednLCQsQ23HQKcCun+HUDaeZI77TtSi1O6QNNNNZiOIKnyqikDA+XBx65r\nyl/EmuSY36zqDbTuG65c4Pr160v/AAk+v/8AQb1H/wACn/xrKNaMZXsdlbAVqtN03Ja+v9ep9LUV\n80/8JPr/AP0G9R/8Cn/xrS0bXPEF1dSk6vdPFHCxl8+6cKAflBHzA7skYx39q6Fi03ax5csiqRTb\nmvuZ9CUV5dqtze2cGpXk2pX/ANljijjEiXRTLfKTggMA5zjjjg9K5Hwzr+uXHiC2EmqalOibpDF9\npOH2gnDFjhV9SenoauWISaVjCnlUqlNzU1ZeT7Hv9FeS+LddutP09VW9uEN2PNheK6kSRXHGPQoO\nQQcHJGCe2D4b1++mvI1uNf1J7iQlEjNxhIxj75MjBSfQfjzgCk8SlLlsEMpqTpOrzaejPeKK8Z8Q\n6y1pq0+ky+IdTtzaKFivIZ2lLnusqrtGfccjoc9o9F1S5Phu/u9Q1vVFlYokbzXrRx7fMA3KeWHA\nwWIx255p/WFe1g/sqfIp829uj6ntVFeGeK9Y1HTZLWC11TUIWKlwftkrmSI/cYsTgkjnAAxnnNT6\nb4nvYfDsEup3upCIySR+cZnBl3MjDac5IUIwJHTdgdaX1lXtYf8AZFR01NS38me2UV4p4s8UXQs7\nNbXU5Yb5ijyrbTSqY4zDGQrZOCSxY5H41e8D679vE0F1qN3LPBBJM8s19KCSUYFRGucqowc9c8jt\nTWIi5ctiZZVUjR9q3+DPXaK+c9R8Sa5HfT+Vq2pRwliYgJ5VG3tgOd2PrzXbavq0+mWEdyNTv1Q2\n6RW5ubh1Rg8PmFiyjLSEgqDkgZ7Y4UcSnfTYqpk84cq5k+byZ6tRXgmsa1eWfiRrY63rFtYxpG0q\ni7eSRSYwzKMnrk4Gelddbarfz6zqKrcXRhjlWK2b52JJQMF7qSMgep6nrTjiE3axNTKpwipc26vs\nz02ivBdI8R69e+LoEvdQvAGmKywqz7FIBBygOAARz6cmu3m1onXbwf2hK8XmrHIoucoqnap2bSNg\n5PzHkFT0zRHEKSvYVbK6lKXK5J6X0ueh0V558KNRvtR07Unvbye5ZLhQpmkL7Rt6DNeh1rTnzxUj\nixNB0KrpN3sFFFFWYBRRRQAUUUUAFFFFABRRRQAUUUUAFZetNp626m/g84fNsjHLMcZIAzzkDGPf\nHQmtSs3WtKg1a1jhnk2bZN6nAOTtIxz7E9MdKAMmLUPC2mWkFsVhs47tM+U67do+YkN/dwQ2eeDU\nJ1jwnJd3kCRJJcKHkmQRFeFXack4AG0eoHB71cOg239nx2v24cIUt24+UHO4gA/MxBIJ6e2Mg5sf\ngrTbS/kuE1RxNK0w2SbCP3gJIxweAfXtQBY8PtockEsmjaf9kDTReblQpbLkjIBJ7nrjrxXWdqxY\nNPS0keVbyS5aSSLcZGDFcOT1HbLHjt9OK2u1N7IXUKyL97uPTNTaxRnuQx8tUHJOF6e9a9cjqVx4\nli1a7XSraKS13jDMyg52rnqaumrv/MmbsVTeaznjTtbx/vL/APFVu+HtPnto5Lm6i8qaXgRltzKu\nSfmPdiSSfwrD+2eN/wDnyg/77T/4qkN941BwbS3yO3mJ/wDFVvJNqysvmZppO+v3HcVj3uim6uZZ\nQ0Hz93jyRwB6+1c+L7xqTgWlsSOoEqf/ABVL9s8b/wDPlB/32n/xVZxpyjqmvvKc090zW/4RtgkS\n77b5Cpz5P3sevPen/wBgTKR5dxCkeQWjEXyvg5GeeaxvtnjcnH2KDPpvT/Gg3vjZSA1nACegMiDP\n/j1Xaf8AMvvFePZmj/wi0hjdPtMPz9W8jn7uPXn1+tS/8I9NtIM9uSQRu8jB529MHj7v6msj7d41\nzj7JbZ9PNTP/AKFS/bPG/wDz5Qf99p/8VRap/MvvC8ezNj/hH5y5ZriEjeHC+VwvzMdo5+6d3T2p\nP+Edk8oRiW2GF27lgwR8u3jnr3+prI+2eNv+fKD/AL+J/wDFUfbPG+M/YoMeu9P8aLT/AJl94Xj2\nZ1em2X2C2MW5Tli3yggDP1Jq5XEfa/G//PjD/wB9p/jR9s8b/wDPlB/32n+NZuk27tr7ylUS6M7e\niuI+2eNv+fKD/v4n/wAVR9r8b/8APlB/32n+NHsX3X3h7RdmdvRXEfbPG56WUH/faf8AxVH2vxv/\nAM+UH/faf40exfdfeHtF2Z29FcR9s8bf8+UH/fxP/iqPtnjc9LKA/wDA0/xo9i+6+8PaLszt6K4g\n3njcHBsoB9XT/wCKo+2eN/8Anyg/7+J/8VR7F9194e0XZnb0VxH2zxv/AM+UH/fxP/iqPtnjc/8A\nLlB/32n/AMVR7F9194e0XZnb0VxP2vxx/wA+MP8A32v+NJ9s8bg4NlAD/vp/jR7F9194e0XZnb0V\nxH2zxv8A8+UH/faf/FUfa/G//PlB/wB9p/jR7F9194e0XZnb0VxH2zxv/wA+UH/faf40G88bAZNl\nAB/10T/4qj2L7r7w9ouzO3PSvnrxpY3knjTV3SzuXRrgkMsLEHgdwK9O+2eN/wDnyg/77T/4qj7X\n43/58oP+/if/ABVY1sI6itzL7zuwGY/VJuaje6seKf2df/8APjd/9+H/AMKP7Ov/APnxu/8Avw/+\nFe1/a/G//PlB/wB/E/8AiqPtfjf/AJ8oP+/if/FVh/Zv99Hqf6yP/n1+f+R4p/Z1/wD8+N3/AN+H\n/wAKP7Ov/wDnxu/+/D/4V7X9r8b/APPlB/38T/4qj7X43/58oP8Av4n/AMVR/Zv99B/rI/8An1+f\n+R4p/Z1//wA+N3/34f8Awo/s6/8A+fG7/wC/D/4V7X9r8b/8+UH/AH8T/wCKo+1+N/8Anyg/7+J/\n8VR/Zv8AfQf6yP8A59fn/keKf2df/wDPjd/9+H/wo/s6/wD+fG7/AO/D/wCFe1/a/G//AD5Qf9/E\n/wDiqPtfjf8A58oP+/if/FUf2b/fQf6yP/n1+f8AkeKf2df/APPjd/8Afh/8KP7Ov/8Anxu/+/D/\nAOFe1/a/G/8Az5Qf9/E/+Ko+1+N/+fKD/v4n/wAVR/Zv99B/rI/+fX5/5Hin9nX/APz43f8A34f/\nAAp8dlqMMqSx2d2roQysIHyD69K9o+1+N/8Anyg/7+J/8VR9r8b/APPlB/38T/4qj+zf76D/AFjf\n/Pr8/wDI8gjfXYp45livy0Y2jdC5BBJYgjGGBJJIOc5pQ2rJqX2+DT5LecHK+RZlVU+oXGAe/wBe\na9e+1+N/+fKD/v4n/wAVR9r8b/8APlB/38T/AOKp/wBnP+dEf6wL/nz+f+R5S2o6+bb7ObSdoTEs\nTrJZmQNtzhjuBw3zHkYNUrOPV9Pm861tLqOXGA/2UsR9MqcH3Fex/a/G/wDz5Qf9/E/+Ko+1+N/+\nfKD/AL+J/wDFUf2c/wCdAuIEk0qO/r/keRahceIdVEY1D+0boRklPNic7c9cce1R2y6xZpIsFtdp\n5mzJ+zsT8pyMZHHNew/a/G//AD5Qf9/E/wDiqPtfjf8A58oP+/if/FUf2c735194LiBJcqo6f15H\nkQm1z7LcWzW93JFO/mSCW1Lkt/eBZSQfcGqR06/IwbK76YH7h+P0r2r7X43/AOfKD/v4n/xVH2vx\nv/z5Qf8AfxP/AIql/Zrf20NcRW2pfn/keO30Wo311576dcK2xEwsD4wqhR29BViK88SW8CQwNqcE\naLtCwxPHx77QM/jXrX2vxv8A8+UH/fxP/iqPtfjf/nyg/wC/if8AxVP+znvzoT4gTSTo6f15Hjl0\nmtXzI13HqNwyDapljkcqPQZHSn251u1eJoob7ETbkR4XdAcY+6wI6cdK9g+1+N/+fKD/AL+J/wDF\nUfa/G/8Az5Qf9/E/+Kpf2a9+dfeP/WFWt7HT+vI8avINVv7ye6ubS7eady8jfZ2GSevar9vqXia0\naVoPt6NLIJXb7MSd4GAwyvBxxkYr1b7X43/58oP+/if/ABVH2vxv/wA+UH/fxP8A4qn/AGc1rzr7\nxPiBNcro6f15Hi4stSVmYWl6C4IYiFxuB6545q9FdeIIJXlhivI5XnFw7pbMC7jOCTt5HJ46cniv\nWvtfjf8A58oP+/if/FUfa/G//PlB/wB/E/8AiqSy5r7aG+IVLel/X3FD4SR3CWGrPcwyRPJdB/nj\nKZyvOARXo1cR9s8b/wDPlB/38T/4qj7Z43/58oP++0/+Krqp4Zwio8y+88bE4v29V1eW1zt6K4j7\nZ43/AOfKD/vtP/iqPtnjf/nyg/77T/4qr9i+6+8w9ouzO3oriPtnjf8A58oP++0/+Ko+2eN/+fKD\n/vtP/iqPYvuvvD2i7M7eiuI+2eN/+fKD/vtP/iqPtnjf/nyg/wC+0/8AiqPYvuvvD2i7M7eiuI+2\neN/+fKD/AL7T/wCKo+2eN/8Anyg/77T/AOKo9i+6+8PaLszt6K4j7Z43/wCfKD/vtP8A4qj7Z43/\nAOfKD/vtP/iqPYvuvvD2i7M7eiuI+2eN/wDnyg/77T/4qj7Z43/58oP++0/+Ko9i+6+8PaLszt65\nrxnol1rmn20NqzBopvMO1sHhWx1YDrj8Cazftnjf/nyg/wC+0/8AiqPtnjf/AJ8oP++0/wDiqPYv\nuvvD2i7MzIvAV6JdMaSK3l+zh/OaViWYlicqVYbTjpjHLE8VPD4P1eDUdSvFKAXBm2oJ879xYpu3\nAgfewccfKCBVz7Z43/58oP8AvtP/AIqj7Z43/wCfKD/vtP8A4qj2L7r7w9ouzH+FtA1LQY54r7yv\nLeWIxmOXf/y0Jx90HgHrzmu07Vx1pc+KZL+1XUbaJLQzLvZXUkenQ+uK7HtUTjy2RUZXCswEi4uf\n+uv/ALKtadU5tLs55mlkiy7dSHYZ7djSi0txtXON8d6LrOuWlpFpMiIY7iKRy7HtKpztGM4xuJz0\nXABJrl/EPhLXdR8SWk4spZYQkAedWVvs7Icttyyl8gAcBec59a9X/saw/wCeJ/7+N/jR/Y1h/wA8\nT/38b/Gi6Fqeeab4c1yP4iyaxc2qpYqzGORZV8w794O4Dg8bM9xxjktj0EscdDTv7GsP+eJ/7+N/\njR/Y1h/zxP8A38b/ABp3QWZxUun6zM2owrBcJHNFCke/5kyrAtx5mPujA4HtjmsY+H/EUWhRRG0e\ne684SFCi94wCSS553YGfY+gr07+xrD/nif8Av43+NH9jWH/PE/8Afxv8aV0Gpwh8N6hLq2l3hilx\naxpuYsqPuTbjAyfVuCeeenAPauzfaIgM42vx+VTf2NYf88T/AN/G/wAaP7Gsf+eJ/wC/jf407oLM\n5l7bVE8QyTfZ5mtvNJikiZAyg43dwAD33Bido6dax20HXDpM9kYpo5HjiRZ4njLfKyZO5SrE4yRn\nj5e5xXff2NYf88T/AN/G/wAaP7GsP+eJ/wC/jf40roLM8y/4RHW5bG3WWN5ZhdmV1llKKFwuMBW4\nOeSefu9Oa9BjVobG1i/eAp5ancxZu3BPern9jWH/ADxP/fxv8aP7GsP+eJ/7+N/jTugszm9dttTl\n1GOW1t5JbcRqXEZUNvUuQV5B3AlSCTtHX2qo2l6uNVuJDBJLDM8hSR5IiyblC8kAOo4JO3nkYwQa\n6/8Asaw/54n/AL+N/jR/Y1h/zxP/AH8b/Gi6CzOFTQNUFlOs0dxL50cSmP7QFKqqbGXKkcnAI5PB\nIyDzXRaRFc2uhGKeOWORVbaJH3PjHGTk8/jWx/Y1h/zxP/fxv8aP7GsP+eJ/7+N/jRdBZmH4ggv7\nm1thYw+awJEqNgAoV5Bzzg4xgEE5rKuNO1iS4guUtriRFjjVo5ngZhsZz8qvkA8gDLEjPOetdj/Y\n1h/zxP8A38b/ABo/saw/54n/AL+N/jRdBZnnsPhrWkVncTB3jchVmztJjcYJzjkkZGCPm69Sen8P\n6ZdaW9+s77o5LjMIDu2FCqM/Mxx0/T6Vt/2NYf8APE/9/G/xo/saw/54n/v43+NF0FmZd+t1Nozr\nahmuN4KfdzxKD/Fx0Brnn0zWptOt0S3lSaF3LxPJH5TFo8EhX3FhuYnkjOCeMiu1/sax/wCeJ/7+\nN/jR/Y1h/wA8T/38b/Gi6CzPP5vDOsXGtw3whWOBvJjkjaVVdY0Izwg27uWI5Iwo45q74b0fWdP1\nRZrwSIjb94W43oVIYgEeoYjp7812f9jWH/PE/wDfxv8AGj+xrD/nif8Av43+NK6CzKzGRxdqm7cR\nhPmK4Ozsecc98ViLZeIre0WKznto3Cphp3aXne5YEkdwU57YOABXSf2NY/8APE/9/G/xo/saw/54\nn/v43+NO6CzOat4/EkrfaJBFHMEuI08x8BckeWWRRtblc9cgN9ayE0LX5PFS6lcD5N8ZkZWRlOAo\nYqjZxgq2MYOG7YrvP7GsP+eJ/wC/jf40f2NYf88T/wB/G/xougsxu4+lG4+hp39jWH/PE/8Afxv8\naP7GsP8Anif+/jf40cyCzG7j6GjcfQ07+xrD/nif+/jf40f2NYf88T/38b/GjmQWY3cfQ0bj6Gnf\n2NYf88T/AN/G/wAaP7GsP+eJ/wC/jf40cyCzG7j6GjcfQ07+xrD/AJ4n/v43+NH9jWH/ADxP/fxv\n8aOZBZjdx9DRuPoad/Y1h/zxP/fxv8aP7GsP+eJ/7+N/jRzILMbuPoaNx9DTv7GsP+eJ/wC/jf40\nf2NYf88T/wB/G/xo5kFmN3H0NG4+hp39jWH/ADxP/fxv8aP7GsP+eJ/7+N/jRzILMbuPoaNx9DTv\n7GsP+eJ/7+N/jR/Y1h/zxP8A38b/ABo5kFmN3H0NG4+hp39jWH/PE/8Afxv8aP7GsP8Anif+/jf4\n0cyCzG7j6GjcfQ07+xrD/nif+/jf40f2NYf88T/38b/GjmQWY3cfQ0bj6Gnf2NYf88T/AN/G/wAa\nP7GsP+eJ/wC/jf40cyCzG7j6GjcfQ07+xrD/AJ4n/v43+NH9jWH/ADxP/fxv8aOZBZjdx9DRuPoa\nd/Y1h/zxP/fxv8aP7GsP+eJ/7+N/jRzILMbuPoaNx9DTv7GsP+eJ/wC/jf40f2NYf88T/wB/G/xo\n5kFmN3H0NG4+hp39jWH/ADxP/fxv8aP7GsP+eJ/7+N/jRzILMbuPoaNx9DTv7GsP+eJ/7+N/jR/Y\n1h/zxP8A38b/ABo5kFmN3H0NG4+hp39jWH/PE/8Afxv8aP7GsP8Anif+/jf40cyCzG7j6GjcfQ07\n+xrD/nif+/jf40f2NYf88T/38b/GjmQWY3cfQ0bj6Gnf2NYf88T/AN/G/wAaP7GsP+eJ/wC/jf40\ncyCzG7j6GjcfQ07+xrD/AJ4n/v43+NH9jWH/ADxP/fxv8aOZBZjdx9DRuPoad/Y1h/zxP/fxv8aP\n7GsP+eJ/7+N/jRzILMbuPoaNx9DTv7GsP+eJ/wC/jf40f2NYf88T/wB/G/xo5kFmN3H0NG4+hp39\njWH/ADxP/fxv8aP7GsP+eJ/7+N/jRzILMbuPoaNx9DTv7GsP+eJ/7+N/jR/Y1h/zxP8A38b/ABo5\nkFmRSkkw8H/XJ/OtTtVKPSbKKVZEhO5TkEuxwfxNXaUmnsNIKp316bMw4RX819gG7BBPQ4xyPX0H\nParlVppEMhVog+AVycdD1qRmZf69NBo0F9a2XnSTSCNYmk25YkgYboQTjB6YOelZb+MrhPJBtLcN\nLB5ynzWKONwXIYLwMnPIBAX3robhbe7i8q4tUkQdA2DjjHHpxVKfR9Kuc+ZYgA9QkjIOueikd+fr\nzQBnDxqS0p/s24KR25m3BGxkIGIztx0ZOenOc1c8O+Jf7beSN4Y4mWMSDa5JIPsVHIyAcE9vWrbW\nVg3k7rJCYZPNQluQ3qT37dfQegpthpul6ZIZLHTYbdyuwtGMEjOcH8hQBmx/EfwvMYVj1CVjO0qR\nAWk3zmIbpAPl/hHX0rSh8UaPceHf7fjvM6YULiYxsMru25CkZ5IwOOe1TrFaKVK2MIKliuEXgt94\njjv39acqWyRGJbOIRlPLKBVAK8/LjHTk8e5oAw9X8fabplpLPFDc3XkbfPAiZPJDR+YAxYD5iNo2\n9csucDJFrw14stvEovDFA8At3AG91O9TnDDH0P8Aiavm3smxnT4DgKB+7X+H7o6du3pUka28Tl47\nONGLFyyqAdx6np1Pc0AZdp468O3wLWt8ZUEElwzrA+1Y0OGYnHH9cjFbOn38Gp2EN7beYYJl3IZI\n2jJHY7WAIz9KqSWWnywywvptu0csTQyL5a4ZGyWU8dDk5HvUllFb6ZaJaWlqIYEztRTwMnJ/UmgD\nQoqt9q/2P1pftJ/55n86ALFFV/tJH/LM/nR9pP8AzzP50AWKKr/av9j9aPtX+x+tAFiiq/2r/Y/W\nj7V/sfrQBYoqv9q/2P1o+1f7H60AWKKr/av9j9aPtX+x+tAFiiq/2r/Y/Wj7V/sfrQBYoqv9q/2P\n1o+1f7H60AWKKr/av9j9aPtX+x+tAFiiq/2r/Y/Wj7V/sfrQBYoqv9q/2P1o+1f7H60AWKKr/av9\nj9aPtX+x+tAFiiq/2r/Y/Wj7V/sfrQBYoqv9q/2P1o+1f7H60AWKKr/av9j9aPtX+x+tAFiiq/2r\n/Y/Wj7V/sfrQBYoqv9q/2P1o+1f7H60AWKKr/av9j9aPtX+x+tAFiiq/2r/Y/Wj7V/sfrQBYoqv9\nq/2P1o+1f7H60AWKKr/av9j9aPtX+x+tAFiiq/2r/Y/Wj7V/sfrQBYoqv9q/2P1o+1f7H60AWKKr\n/av9j9aPtX+x+tAFiiq/2r/Y/Wj7V/sfrQBYoqv9q/2P1o+1f7H60AWKKr/av9j9aPtX+x+tAFii\nq/2r/Y/Wj7V/sfrQBYoqv9q/2P1o+1f7H60AWKKr/av9j9aPtX+x+tAFiiq/2r/Y/Wj7V/sfrQBY\noqv9q/2P1o+1f7H60AWKKr/av9j9aPtX+x+tAFiioFudzAbCMnHWp6ACue8QtqSqn9m78+Z+9Maq\nzhdvG0NwecZ/pXQ1C9uruW3MM/SqjLld7XIqQ54uN7ehz9y2vCCx+ypZeaYz9r83OFfbkbcHkFuD\n6Dn2p2lvrhnP9qxWaxGOMj7MTkOR84OT0HQHvnPFbv2Vf77fpR9lX++36UnqykrKxy90PEc1syKI\nY2+Y/uWCkkMMKG35AI79TzkL3m0eHWreC5GoSrPOwzGzSAruAPpyFJx2HQ8Dqei+yr/fb9KPsq/3\n2/SkM5Sa68Tw2UshtYGl3xIiwx+YQpxvcjfzjpjjr1IGa09St9TnTGnajDaN8vMlr5vfn+IdRxj9\na2Psq/32/Sj7Kv8Afb9KAOZ8QJfsbUWsEk6MGS48sFfl3JnlfmHG7hcnis549a/tKG68m+mgcQs2\n+FAyFQd3yrIvOWGcg9DxwM9v9lX++36UfZV/vt+lAHl1tpHic3tz5tzf+WUl8v5nX5izFVLY5XkH\ngA9eQeB03hKw1Cy0Ew3ZuIrk4wLiUzbTtHIyAep5BPbtmur+yr/eb9KPsq/32/SgDIsLfUobq4e9\n1CK4hcr5KJbeWY+Ocncc5P5VwtrpHig3lwZbi/EZSXy+WX5iWKqWxyvIPAB68g8D1H7Kv99v0o+y\nr/eb9KAPM4dG8Qx6BbwquoLJscSRm6LMpZFUMrEBsjLZXPY9OadJpHiifWNNvFlvIrdI4jNC1y2d\nyhNwxnByd3U8/N6c+lfZV/vt+lH2Vf77fpQBWPU0VZ+yr/fb9KPsq/32/SgCtRVn7Kv99v0o+yr/\nAH2/SgCtRVn7Kv8Afb9KPsq/32/SgCtRVn7Kv99v0o+yr/fb9KAK1FWfsq/32/Sj7Kv99v0oArUV\nZ+yr/fb9KPsq/wB9v0oArUVZ+yr/AH2/Sj7Kv99v0oArUVZ+yr/fb9KPsq/32/SgCtRVn7Kv99v0\no+yr/fb9KAK1FWfsq/32/Sj7Kv8Afb9KAK1FWfsq/wB9v0o+yr/fb9KAK1FWfsq/32/Sj7Kv99v0\noArUVZ+yr/fb9KPsq/32/SgCtRVn7Kv99v0o+yr/AH2/SgCtRVn7Kv8Afb9KPsq/32/SgCtRVn7K\nv99v0o+yr/fb9KAK1FWfsq/32/Sj7Kv99v0oArUVZ+yr/fb9KPsq/wB9v0oArUVZ+yr/AH2/Sj7K\nv99v0oArUVZ+yr/fb9KPsq/32/SgCtRVn7Kv99v0o+yr/fb9KAK1FWfsq/32/Sj7Kv8Afb9KAK1F\nWfsq/wB9v0o+yr/fb9KAK1FWfsq/32/Sj7Kv99v0oArUVZ+yr/fb9KPsq/32/SgCtRVn7Kv99v0o\n+yr/AH2/SgCtRVn7Kv8Afb9KPsq/32/SgCtRVn7Kv99v0o+yr/fb9KAK1FWfsq/32/Sj7Kv99v0o\nArUVZ+yr/fb9KPsq/wB9v0oArUVZ+yr/AH2/Sj7Kv99v0oAgT/WJ/vCr1QrbKrA7mODntU1ABRRR\nQAUUUUAFFFFABRRRQAUUUh6GgBaK8dOqavk/8TO86/8APdv8aP7U1f8A6Cd5/wB/2/xrr+qPuc/t\n12PYqK8d/tTV/wDoJ3n/AH/b/Gj+1NX/AOgnef8Af9v8aPqj7h7ddj2KivHf7U1f/oJ3n/f9v8aP\n7U1f/oJ3n/f9v8aPqj7h7ddj2KivHf7U1f8A6Cd5/wB/2/xo/tTV/wDoJ3n/AH/b/Gj6o+4e3XY9\niorx3+1NX/6Cd5/3/b/Gj+1NX/6Cd5/3/b/Gj6o+4e3XY9iorx3+1NX/AOgnef8Af9v8aP7U1f8A\n6Cd5/wB/2/xo+qPuHt12PYqK8d/tTV/+gnef9/2/xo/tTV/+gnef9/2/xo+qPuHt12PYqK8d/tTV\n/wDoJ3n/AH/b/Gj+1NX/AOgnef8Af9v8aPqj7h7ddj2KivHf7U1f/oJ3n/f9v8aP7U1f/oJ3n/f9\nv8aPqj7h7ddj2KivHf7U1f8A6Cd5/wB/2/xo/tTV/wDoJ3n/AH/b/Gj6o+4e3XY9iorx3+1NX/6C\nd5/3/b/Gj+1NX/6Cd5/3/b/Gj6o+4e3XY9iorx3+1NX/AOgnef8Af9v8aP7U1f8A6Cd5/wB/2/xo\n+qPuHt12PYqK8d/tTV/+gnef9/2/xo/tTV/+gnef9/2/xo+qPuHt12PYqK8d/tTV/wDoJ3n/AH/b\n/GrVlNrd87pHql4CgDEmZiAM4JPPb/61J4VrVsar36HrFFeXJFrzpMy6tdsI5FQbJXYsCCQQAc9B\n3Hf2qaG01yW18865Mg8oyBWnfJwWGOv+z+vtS+rr+YftX2PS6K80e11xRBjWbvfLKsYVndduSeSc\n49D/AMCFNFtrhuEjGuTlWRpCwmfgL14/EfnR9XX8we1fY9Norya9n1uxnWKTVbpiyBwVnbGD0qt/\namr/APQTvP8Av+3+NUsK3qmL29uh7FRXjv8Aamr/APQTvP8Av+3+NH9qav8A9BO8/wC/7f40fVH3\nF7ddj2KivHf7U1f/AKCd5/3/AG/xo/tTV/8AoJ3n/f8Ab/Gj6o+4e3XY9iorx3+1NX/6Cd5/3/b/\nABo/tTV/+gnef9/2/wAaPqj7h7ddj2KivHf7U1f/AKCd5/3/AG/xo/tTV/8AoJ3n/f8Ab/Gj6o+4\ne3XY9iorx3+1NX/6Cd5/3/b/ABo/tTV/+gnef9/2/wAaPqj7h7ddj2KivHf7U1f/AKCd5/3/AG/x\no/tTV/8AoJ3n/f8Ab/Gj6o+4e3XY9iorx3+1NX/6Cd5/3/b/ABo/tTV/+gnef9/2/wAaPqj7h7dd\nj2KivHf7U1f/AKCd5/3/AG/xo/tTV/8AoJ3n/f8Ab/Gj6o+4e3XY9iorx3+1NX/6Cd5/3/b/ABo/\ntTV/+gnef9/2/wAaPqj7h7ddj2KivHf7U1f/AKCd5/3/AG/xo/tTV/8AoJ3n/f8Ab/Gj6o+4e3XY\n9iorx3+1NX/6Cd5/3/b/ABo/tTV/+gnef9/2/wAaPqj7h7ddj2KivHf7U1f/AKCd5/3/AG/xo/tT\nV/8AoJ3n/f8Ab/Gj6o+4e3XY9iorx3+1NX/6Cd5/3/b/ABoGqavkf8TO86/892/xo+qPuHt12PYq\nKQdBS1yHQFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUjfdP0paa/8Aq2+hoA8zTQtQ\nZFYWM5BGQdtL/YGo/wDPhcf98Vry6RrWr62J4blrC1s4oo4nLSnz9yqz4CyKAOAuSD6jBFZZsdbG\nteI9k2qyR3dgVt5GDhPOPnfKoKEIF3JjnHQ5PIHU8TK+xgqKtuM/sHUP+fC4/wC+KP7B1D/nwuP+\n+K52z0bxkrXlw+m6lvlt0G2a68xQEeAHYA3DeX5hBBzlepzVhfD/AIuFnpenGG/tWWeT7Q9tKzCP\nzJIF3ZLYb90ZemcZbgHmj61LsP2K7m1/YGo/8+Fx/wB8Uf2DqH/Phcf98Vzl5pfj1ri1SBtW2R27\nxr5buI1PnTbHIZssFj2fK3JyuTkVow6B4k/tRLr7JdC3/tYEIyrv8r7aJPNLZ3Y8v5dvXb3/AIaP\nrUuwexXc0v7A1H/nwuP++aP7A1H/AJ8Lj/viu/0n7Z/Z6/2hn7Tvkznb93edv3ePu4/rzV3ij61L\nsHsV3PM/7A1H/nwuP++aP7A1H/nwuP8AvivTOKQOhbaGXPpmj61LsHsV3PNP7A1H/nwuP++aP7A1\nH/nwuP8AvmvTOKNyg4JGfSj61LsHsV3PM/7A1H/nwuP++aP7A1H/AJ8Lj/vmvSw6FioZSw7Zp3FH\n1qXYPYrueZf2BqP/AD4XH/fNH9gaj/z4XH/fFemcUcUfWpdg9iu55n/YGo/8+Fx/3zR/YGo/8+Fx\n/wB816V5kfPzr8vXnpTsqRnIx60fWpdg9iu55n/YGo/8+Fx/3zR/YGo/8+Fx/wB816WWUMFJAJ6D\n1p1H1qXYPYrueZf2BqP/AD4XH/fFH9gaj/z4XH/fNem0UfWpdg9iu55l/YGo/wDPhcf98Uf2BqP/\nAD4XH/fNem0UfWpdg9iu55l/YGo/8+Fx/wB8Uf2BqP8Az4XH/fNem0UfWpdg9iu55l/YGo/8+Fx/\n3zVmz07WLCVpLeymV2G0kxg8ZB9favRKKTxLejQexXc8+Sz1mMuUsHUPjcPIU5wMd89s/mfWpkTX\no4RDHZOsYzhRCABndx9PmNd3RS9v/dQ/ZeZwJg11vL3Wcp8tlZf3Q4I79fYfkKUw640iSGwbcmQv\n7gcZxn+Q/Wu9oo9v/dQey8zzm60rVLyUSS6fKGC7crHjPueeTUH9gaj/AM+Fx/3zXptFNYlroL2K\n7nmX9gaj/wA+Fx/3zR/YGo/8+Fx/3xXptFP61LsHsV3PMv7A1H/nwuP++aP7A1H/AJ8Lj/vivTaK\nPrUuwexXc8y/sDUf+fC4/wC+aP7A1H/nwuP++K9Noo+tS7B7FdzzL+wNR/58Lj/vmj+wNR/58Lj/\nAL5r02ij61LsHsV3PMv7A1H/AJ8Lj/vmj+wNR/58Lj/vmvTaKPrUuwexXc8y/sDUf+fC4/75o/sD\nUf8AnwuP++K9Noo+tS7B7FdzzL+wNR/58Lj/AL5o/sDUf+fC4/75r02ij61LsHsV3PMv7A1H/nwu\nP++aP7A1H/nwuP8AvmvTaKPrUuwexXc8y/sDUf8AnwuP++KP7A1H/nwuP++a9Noo+tS7B7FdzzL+\nwNR/58Lj/vij+wNR/wCfC4/75r02ij61LsHsV3PMv7A1H/nwuP8Avij+wNR/58Lj/vmvTaKPrUuw\nexXc8y/sDUf+fC4/75o/sDUf+fC4/wC+a9Noo+tS7B7FdzzL+wNR/wCfC4/75pH0LUFRmNjOABkn\nbXp1QXn/AB5T/wDXNv5GhYmV9hOirbky/dH0paan+rX6CnVym4UUUUAFFFFABRRRQAUUUUAFFFFA\nBRRRQAUUUUAFFFFABTZP9W30NOpr/wCrb6GgDJto9TNneCZ4mt3iQWa2wKSqPLGdzE43bs4IxgVy\n9t4d1GOxu7c2k+HAVQ7oyZwATsZiDk5JPy9T757CDUbGCCCKW8t45NirseQA525xgn05q0l3bSXE\ntuk8TTxY8yMOCyZ6ZHbNDauylCVr2f3Hnuo+FNfuLa1ksppLaW2huG8oSbB5hbKhQh29CwBwo65A\nzitRdH1GHxFJL9kkkhm8zdIJnC42qIxnzMgA78/KepIHIx1Q1OwaN5Be2xjQZZhKuF5xyc8c8Uh1\nXTwATe2/PAxIDmlzLuP2VT+V/c/8ji7bQNestOuBHADcPdSSITdb/lYP/e+6uSOnzckVNdaRq0sd\nq8NpOY442iNvK0JCjzARtVs44XjLZGV64NdYusaayhhqFrtLBQfOXknPHXrwfyNTfbLbzvJ+0Reb\nnGzeN2fTFF13B05reL+5/wCR5/L4Z1y48TSXjveC1efzCgkAKjao4beSOmDgY9sYqva+EdctNOKJ\nA63BnZ90FyeeJAHwzgAglSCCfvdD0Holzqmn2U6QXV9bQSuCypLMqswHUgE80Jqlg88cCXts0smN\niLKpZsqWGBnn5QT9BmmQcXceE9RlvCVDPax+akELv8iAsuGxvOCV3Yx3AJx0BpvhjU7bxNBqJto4\n4FlaRssC5yZACSD1wwJ6/U4rthqFkzTqLuAm3/1wEg/d/Lu+b04557U61vrS+RntLmG4RSAWicOA\nSAwGR7EH6EUAYXiKw1i/8NRW8SQy6gV2y+WAqbjGwJG/kDcR0Oa45/C+v22nabax2ZkeHzI5HARt\nq+Z8rBiwJ+UZ7HoPUD1RmVELswVVGSScACqx1OwCsxvbYKuCSZVwMnHr6kUm0ilCUtlc4xvDOoN4\niuNTWGVQ0TKhEqh8srr646be+enOc4z5fCniJdHvoIVf7VdbC832r5mG7aynLf3SWB6YGOpr0Ear\npxtvtIvrbyN/l+b5q7d3pnOM+1SS31pA+yW5hjbG7DyAcevP0NF13H7Oe3K/uf8AkefHwnr1zplq\nLhiJraBwRJN5jOfMcqM55+XaTkjOeoxVMeD9YXWpmFndGFoG8uRroHEjQDOct/z0yOnp6Zr0pdTs\nGuxare25uD0iEg3dCenXoCfoDT/t1pskcXMJWMlXIcHaR1B9KLoHTmt0/uZ5tZ+DtSafU47i1kEN\ny6hAdoDDO7LHJwA4U8DJA4HNTXXhHWzc2C2cQihgt5ISWlB2/vd69MZypK568nIHWu+TWNNkgM6X\n9s8QbaXWUEA+mR3qzDPDcwrNBKksTjKujAg/Q0Jp7BKnOPxJr5M5G10fWIvF0mqCOEW0uzKPEuV4\nZWYEMSDwDjOPm6E9OpsEu47NFvpY5bgZ3PGu0Hnjj6VKs8LSvGsqF0xuUMMrnpke9MS9tZJCiXML\nOOqrICaLoXLLsT0VX+3WhtzcC6h8gdZPMG3rjr9eKHv7OLb5l1Am4lRukAyR1HXqKLofs59n9zLF\nFVjqNkBk3cAGAeZB0PTv7Gov7a0zzWi/tC1MiFgyiUZBHUH6d6OZdxqlUe0X9z/yL1FVF1TT237b\n62Ow4bEy/L068+4/Oj+07DyPP+2W/lZxv8wY6Z6/QijmXcXsp/yv7n/kW6Kr/brXA/0iIZCkZYD7\nzbV/M8D3pRe2jXTWy3MJuF4aISDcOM8jr05ouhckuzJ6KggvbW5bbBcwynGcI4PHrxU9O9xOLi7N\nBRRRQIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC\nobz/AI8p/wDrm38jU1Q3n/HlP/1zb+RprdCexIn+rX6CnU1P9Wv0FOpDCiiigAooooAKKKKACiii\ngAooooAKKKKACiiigAooooAKa/8Aq2+hp1Ifun6UAcBqehXeqajFdx6raJDHHG0KPOco4ChiB0HG\n78+nepYfDoXxEdQa4sViM0khC3JLAMfXGd3TvxzjrxxptASTtH5Un2Qf3R+VdDy6m5OV3vc3jnWJ\njTVNWslbbodaPCzSaNcWc2p2rSPbW8EZMwIXy15/hzjdnA9+eaoW3gm4jcK+r6ekfLECUurHHAZe\nMj8Rjr7Vg/ZB/dH5UfZB/dH5VLyyk+rNY8QYyKaVtfI6VfCl95FrG2saewiyzRyyeapbzHfqcH5g\nyqSMHgnniusaKCTVrCZ5bP7NbQP8vmgnzTtCsB7KHGc/xV5d9kH90flR9kH90flVxy+nHZswrZvi\nK3xpddlbfc6jx74ObxdqENxBq1hEkcHkhJucEtlm4OOgAxj19sYV98NLiXXxqFrq2mRoFhWMLKyv\nF5caR5Dck52sccdhmqn2Qf3R+VH2Qf3R+VafVY9zh9u+x0E3g0yLrJjbSI/t9rcw2qLPg2bS5Zju\nCguGfB7bRkDINbGgeG4tAbVhZ6paWwuriN4GijiyiKkYYEYAySr+vXPUmuH+yD+6Pyo+yD+6Pyoe\nEi+o44iUXdI9hubi2ntZoVvYo2kRlDhxlSRjPXtXG3nhqZ47xYdXtpHlt4o0kklwQVdC2OpAIUnq\neWPSuQ+yD+6Pyo+yD+6PyqJ4GE92dOHzOth/4djpx4YuX0aKxnudJMkUhbzopiucqVPy425+Ymp3\n8PTPZ21q99arbRIgaKK9KhmEu/PTH3eM8c847VyP2Qf3R+VH2Qf3R+VR/ZtLuzpee4p9FvfbqzvR\npcra0t3JfWrWwkVmjNzuY4zg5YHkbjkdPTaM7sy38KG3tpojqVq/nW00b4lUYkZ1ZWyRzgA5PHXH\neuV+yD+6Pyo+yD+6PypvLqb6siOdYmKsrdOnbY6qLw5eLot5bi/sIby4kD70uMoMLtAHAOehyenb\npz0Om2K2NtYQjV44ltXcvHAyhJgemQfu/QdP1rzT7IP7o/Kj7IP7o/KnHL6cdmya2cYiqmpJb328\nrefT7jrtT8NzXmv3eoQ32nhJmyoebleFGeBjPy8enPrTbTwkLbUb66/tKxxPHIsaowBQspHX6kdv\nfjpXJ/ZB/dH5UfZB/dH5VP8AZtK97s0We4tQ5Fa1ktuit/kdjaeGfslo9uupWpX/AENkCyhQGik3\nPxgjBGMZzkgZHFNHhuZrGxi/teG3e3jmVminBJ3OrBVwBgcHJ9cda5D7IP7o/Kj7IP7o/Kj+zqXd\nieeYpu7tffb5HWS+GLiTTfI/tmBCllFbrCk/7t2WMI272zk8DnPaoY/Ctx/bc9//AGlZw7pZGQQ3\nGMhgcbjgHOTk4/pXM/ZB/dH5UfZB/dH5Uf2bS7spZ9i0mlbXy/r9Tox4QupdL1K2n1awaS9hG5vN\nLAyBwQTkf3VUZ+vB73W0C7OiLp51OyLi5+0iVZtuDkHA4yMZIznoB07cvY6Yt1exwFV+fI9OxPXB\n9PSt9fB1rJffZ1klGYSy8KSWGA3YDAOfrUPAUY7tlPPMZPot77dbW/Is3ugXt2bcnWLJxGmx42kA\nD7SxjbO04wRHxjkA597MGh7dX+3zX9mzPgSYkAOBGQcEDPLkcdNqgYJ6YM3hhY727ttpQpEJIt5B\nJY9E44JODjp0pLTw7aXOkC4MrrOctgIMYBxtwcZPfPsaf1KjvdkPN8U1y2XVbGxoXh19J1KWU6ja\npG0EkSyRTAum5YgCARjIMZ/Tiuus54Lazihl1FLh0UBpZHXc59TiuDk8JWYlESXDbt65BCk7S/ln\nj65PtwD61BceGLaKW3CzMVdXdyQvAWNX68dc4yfaqp4WlHSLZjicfXxD5qiXQ9K+3Wn/AD8w/wDf\nwf40fbrT/n5h/wC/g/xrzGHw7aTtI6T5iEO/PynYdxADMOOnOO+RWdcaQ8LT4iJSF9hLKARn7uR2\nzWiw8HpzHI6sl0PX/t1p/wA/MP8A38H+NH260/5+Yf8Av4P8a80Phyw+xxSLcfvXxhSw5zt4+723\nfqKtSeE7JLtISzgCYRuWIBOVJGOMZyO2aXsYd39xXtJdj0H7daf8/MP/AH8H+NH260/5+Yf+/g/x\nrzseF7J9SW2j8xgYRIVLDcpJ+nT8uorEvtOit76eGIZjRyFLDnHv7044eEtExOrJdD1/7daf8/MP\n/fwf40fbrT/n5h/7+D/GvGPsg/uj8qPsg/uj8qr6rHuT7d9j2f7daf8APzD/AN/B/jR9utP+fmH/\nAL+D/GvGPsg/uj8qPsg/uj8qPqse4e3fY9n+3Wn/AD8w/wDfwf40fbrT/n5h/wC/g/xrxj7IP7o/\nKj7IP7o/Kj6rHuHt32PZ/t1p/wA/MP8A38H+NH260/5+Yf8Av4P8a8Y+yD+6Pyo+yD+6Pyo+qx7h\n7d9j2f7daf8APzD/AN/B/jR9utP+fmH/AL+D/GvGPsg/uj8qPsg/uj8qPqse4e3fY9n+3Wn/AD8w\n/wDfwf40fbrT/n5h/wC/g/xrxj7IP7o/Kj7IP7o/Kj6rHuHt32PZ/t1p/wA/MP8A38H+NH260/5+\nYf8Av4P8a8Y+yD+6Pyo+yD+6Pyo+qx7h7d9j2f7daf8APzD/AN/B/jR9utP+fmH/AL+D/GvGPsg/\nuj8qPsg/uj8qPqse4e3fY9n+3Wn/AD8w/wDfwf40fbrT/n5h/wC/g/xrxj7IP7o/Kj7IP7o/Kj6r\nHuHt32PZ/t1p/wA/MP8A38H+NH260/5+Yf8Av4P8a8Y+yD+6Pyo+yD+6Pyo+qx7h7d9j2f7daf8A\nPzD/AN/B/jR9utP+fmH/AL+D/GvGPsg/uj8qPsg/uj8qPqse4e3fY9n+3Wn/AD8w/wDfwf41Dd3t\nqbOYC5hJMbf8tB6V499kH90flSi0AIO0flTWFjfcHXfY9rT/AFa/QU6kH3R9KWuE6QooooAKKKKA\nCiiigAooooAKKKKACiiigAooooAKKKKACkbhGPtS01/9W30NAHCxeEb+SFHDW2GUEZc9/wDgNO/4\nQ7UP71t/38P/AMTVbVm8RPrmnDT0vVs45YvNaIuEZWES/NzggFmPy9Mc+tM0G78Tx3lxb6vZ6hNH\nmWBWLECX7xB4Hykkgbg2AO+MV0PETuZKlGxc/wCEO1D+9bf9/D/8TR/wh2of3rb/AL+H/wCJqfVn\n1pdJtoDPdLd25YSyQRNtlIHyPuAPGcZGDnnI4qjFJ4ie5uHM+pbYwGTzIyu85RVwNmP4nOOc99uM\n0vrEw9jEn/4Q7UP79r/38P8A8TR/wh2of3rb/v4f/iagsB4pgu7rzpbstNav9nDFmCuRGFJyCFwW\nb6YPGBVvUofEun2axwvcXAeePYY5y7IBktuYR7sdOMHpgkA0fWJh7GJH/wAIbqH962/7+H/4mj/h\nDdQ/vW3/AH2f/ia6zRp5rjSLaS5SdJtm1xOAHJBxkgAdcZ6DrV6j6xMPYxOF/wCEN1D+9bf99n/4\nmj/hDdQ/vW3/AH2f/ia7qij6xMPYxOF/4Q3UP71t/wB/D/8AE0f8IbqH962/77P/AMTXdUUfWJh7\nGJwv/CG6h/etv++z/wDE0f8ACG6h/etv++z/APE13VFH1iYexicL/wAIbqH962/77P8A8TR/whuo\nf3rb/vs//E13VFH1iYexicL/AMIbqH962/77P/xNH/CG6h/etv8Av4f/AImu6oo+sTD2MTzv/hH5\nQql7uwjLKG2vPg4Ptij+wG/5/wDTf/An/wCtWpNd6nbXAGnWH2ncF3loty/6tcfMDwRwcHrmrJud\ncjuEiaxhkAEmXW3IDEIGX+LAGTt65OKHiKnkX7Cmkr3/AAML+wG/5/8ATf8AwJ/+tR/YDf8AP/pv\n/gT/APWrbe+17yYn/siFCZwrDYThcBgeMnvtJ7FT6ikkvPECRpt06F5XgL7fs5ADfNwTu/hwox/F\nuPTFH1ip5B7Gl5/gYv8AYDf8/wDpv/gT/wDWo/sBv+f/AE3/AMCf/rV30cIESiRUZwPmYJgE+uO1\nP8qP/nmv/fNH1ip5B7Kl5/gcAmhyRuHj1HT1cdGW6wR+lSjTLtZBIusWYdc4YXhyM8nnHeu68qP/\nAJ5r/wB80hijx/q1/wC+aX1ifkHsqfmcK2iXUoXfqVk4U5XN0Tj6cVZj8PavNHujvonQ5GVuGI9+\n1cDqcvh5/Eviwazqlxb3MNwwto1mKj/VkjaN43euDgZCjPzYr0P4XSGb4daVIXZywlO5jkn963Jq\nViZt2sjqrYCnTp86b6fir79Rh8Na0W3G7jLepnbPXPp600+FdWMYjNxCUAxt85sY446ew/KpvFV/\nrFtqSRadJLtNtuEcIXezeYuduQ3O3ceV7H3xHFq94utQLPqLJAjnegjBWVSMggEZPORlTgbTxzxf\n1ifkcfsokaeEtTjJMc0CFhglZWGR6fdpH8I6nI5d5bdmPVmkYk/+O1ONVvbWymhuriaO7WKOQ+Yv\nQGIAnJAH3yf4l5zz2rF1DxJ4gez02W0lf97bAzGMoMPiRm42vggKvf8ADJ4PrExeyibB8M6y0flm\n6jKYA2mZsYGMdvYfkKavhbVkJK3EIJO4/vW6+v3etWvEOrajBY2lzp0pWVfMMsRgLiQhduO38R4x\n169AadpmqX8rWt05lktwjR3UjRledx2MExwQB83sw9OD6xPyH7KJUbwzrLOXa6iLdz5zZ/lUTeD9\nRY5aS3J9TIx/9lqnaarr6vexy3MxSSVxCXgcMQJSrBf7uF59sDuaTUdR8SR3dslpd3X2draJ7iR1\nQJC7j+JihKjoeh7560fWJi9lEuf8IbqH962/7+H/AOJo/wCEN1D+9bf99n/4muo0GaafRbeS4nE8\npDZkHRvmOP4VzxjnAz1rSo+sTD2MThf+EN1D+9bf99n/AOJo/wCEN1D+9bf99n/4mu6oo+sTD2MT\nhf8AhDdQ/vW3/fw//E0f8IbqH962/wC+z/8AE13VFH1iYexicL/whuof3rb/AL7P/wATR/whuof3\nrb/vs/8AxNd1RR9YmHsYnC/8IbqH962/77P/AMTR/wAIbqH962/77P8A8TXdUUfWJh7GJwv/AAhu\nof3rb/vs/wDxNH/CG6h/etv++z/8TXdUUfWJh7GJwv8Awhuof3rb/vs//E0f8IbqH962/wC+z/8A\nE13VFH1iYexicL/whuof3rb/AL7P/wATR/whuof3rb/vs/8AxNd1RR9YmHsYnC/8IbqH962/77P/\nAMTR/wAIbqH962/77P8A8TXdUUfWJh7GJwv/AAhuof3rb/vs/wDxNH/CG6h/etv+/h/+JruqKPrE\nw9jE4X/hDdQ/vW3/AH2f/iaP+EN1D+9bf99n/wCJruqKPrEw9jE4X/hDdQ/vW3/fZ/8AiabL4Rv4\n4XctbYVSThz2/wCA13lQ3n/HlP8A9c2/kaaxE7g6UbEq8op9qWmp/q1+gp1c5qFFFFABRRRQAUUU\nUAFFFFABRRRQAUUUUAFFFFABRRRQAU1/9W30NOpr/wCrb6GgClaC7+xw4kgx5a/wN6fWpiLsAky2\n4A6/If8AGuF1fw9rWpa5p15bRL9lt5IpNxZASpEStx1bA3nDfhnpTdB0LxNpl7cLd20VzAxlijZ5\nt25DuI35OCNxyTtz7DJqm9SUtDvNt3/z0g/74P8AjRtvP+ekH/fDf41yuraNqcuk21ji5uWtNwWZ\nZFAkGMIxXcDuUkd+MZ71QTw5rLT3MjR3MZwDCzXG7LfIFJIkzkDzOeMZP3s4pXHY7nF5/wA9IP8A\nv23+NIv2pxlZrdh6hCf615+fC2pMmpC1sWimkQ+T58USxkjaMFlYnOMjOO2fSup8MaVd6S17FcLG\nI3ZGTYFAJC4JGFGeAvJGcg0XCxs7bz/npB/3w3+NG28/56Qf98N/jViii4WK+28/56Qf98N/jRtv\nP+ekH/fDf41YoouFivtvP+ekH/fDf40bbz/npB/3w3+NWKKLhYr7bz/npB/3w3+NG28/56Qf98N/\njViii4WK+28/56Qf98N/jRtvP+ekH/fDf41YoouFivtvP+ekH/fDf40m28/56Qf98N/jVmii4WOb\nVbVlTz47Z5hGu4/ZXcjjjJHtTvLsf+fe3/8AAKWqok1BLxvsmq2FpD9nIaO4TczSGJfLYfMPlBzk\nd6JZteNq6xeI9FWc2cSI7Q5AuAf3jkbvukcAdv5pvV7Gy5kklfp1fb0LXl2P/Pvb/wDgFLR5dj/z\n72//AIBS0yW41U3UjRa/pCwG7idEaPJFuB+8Qnd94noe1JDcastxA03iDSGhE87SqseC0RH7pQd3\nBU9T3pX9B3l5/e/8iTy7H/n3g/8AAKWjy7H/AJ94P/AKWk0y51OK4tW1PXtKnhW1KXCwoELz7sh1\nO7hdvGPXmtn+0rH/AJ/bf/v6v+NO/oF5dpfe/wDIx/Lsf+feD/wClo8ux/597f8A8Apa2P7Ssf8A\nn9t/+/q/40HUrHH/AB+2/wD39X/Gi/oF5ef3v/I5WeLwn57/AGm20Lzs/P5tl8+ffPNb+lCM6dF/\nZTWK2YyI1ghKoOTnAB9c14zqmqeF4PE3ixdYsWuriW4b7NKq7wf3ZHynYdvpnnkqcfLmvSvhZz8N\n9J+UrxLweo/evUxlrsjqxOH5aKleXTfbVX09Dqdt5/z0g/74b/Gk23n/AD0g/wC+G/xqzRV3POsV\ntt5/z0g/74b/ABo23n/PSD/vhv8AGrNFFwsV9t5/z0g/74b/ABpNt5/z0g/74b/GrNFFwsVtt5/z\n0g/74b/Gjbef89IP++G/xqzRRcLFfbef89IP++G/xo23n/PSD/vhv8asUUXCxX23n/PSD/vhv8aN\nt5/z0g/74b/GrFFFwsV9t5/z0g/74b/Gjbef89IP++G/xqxRRcLFfbef89IP++G/xo23n/PSD/vh\nv8asUUXCxX23n/PSD/vhv8aNt5/z0g/74b/GrFFFwsV9t5/z0g/74b/Gjbef89IP++G/xqxRRcLF\nfbef89IP++G/xo23n/PSD/vhv8asUUXCxX23n/PSD/vhv8aNt5/z0g/74b/GrFFFwsV9t5/z0g/7\n4b/Gjbef89IP++G/xqxRRcLFfbef89IP++G/xo23n/PSD/vhv8asUUXCxX23n/PSD/vhv8aNt5/z\n0g/74b/GrFFFwsV9t5/z0g/74b/Gobtbv7HNmSDHlt/AfT61eqG8/wCPKf8A65t/I009RNaEif6t\nfoKdTU/1a/QU6pKCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKa/wDq2+hp1Nk/1bfQ\n0AcPP470vS9SOk3NxqAktzDHPMtqphiMiqVy3/Ah06c+lWB440v+3bnSGu7xbiBpUJaBArtGu5gp\n6k49ue1c7rfh/Q7nxIJ5m1dLycwO723lbRIIwqDa6/MMKT3AOe9WrXTfDx8Qf2mtndx3RWUmQ+Sy\nHzNqbip4I+bggYPOSapydyUlYv6f8QtP1JLpof7RU28Sy4kiiHmqzbRsOeT14ODxW34d1yHxNYyX\ndncXUapIYyssaAnoQwxkFSDkHvXFLoPh7w7pGpF21JoJlMTxu0aybI1WQIjBRtUbum7tnJwMa2g6\nhpPhWG00fSo53tHWBt9zOo2h1+8OOfuHODgHgYGBS5mOyO3+zzf8/cn/AHwv+FH2eb/n7k/74X/C\nubt/H2nzwzytaXcQismvgJAoLouMjrwckUxPH9lLp8V1HbOCZWikjeRQyEAHtnPUY6UczCx0/wBn\nm/5+5P8Avhf8KPs83/P3J/3wv+Fc6/jWJdRsrZbGd47pUYypkiPdjrgc43LnB/iH0rfutQgtbM3T\nSIYlcIzBsgHdtPTPIPajmYWH/Z5v+fuT/vhf8KPs83/P3J/3wv8AhWRP4ss7eKF5Y3jMjMB5hCqA\nFLAlz8oyMdTxnB5qUeJbQ3FvEElZZVBMiKXVSRwMgEH3I4HFHMwsaX2eb/n7k/74X/Cj7PN/z9yf\n98L/AIVzsXjWN3vzJp06Q20byJIGBEyKwBZeBxghvYGnx+N7KW18+K2llTz3i/dSxN8qjcXPz8Da\nCfw+mTmYWN/7PN/z9yf98L/hR9nm/wCfuT/vhf8ACsKbxnaQanDYvZ3QklKDOFwu7bjPP+2v60T+\nNLKB7hfs0zmJnVdrxZkKEhgF37geDjIGeMcmjmYWN37PN/z9yf8AfC/4UfZ5v+fuT/vhf8K5u7+I\nGl2dl9rkjmaIsijbtySzFTwT0BB5p8/jrTotXtdPCMXmWNzIzAIgfGASM889OnXmjmYWOh+zzf8A\nP3J/3wv+FJ9nm/5+5P8Avhf8KxZvFsdut8ZNPn/0IAzBZYmKk44wGzxkE+meauaL4gttcM32aORR\nCE3bxjlgTj8MfrRzMLD7eHbYQyS3e1Qg5ZE4/Spo7YSoHjutynoRGh/pVHUdKfWPDQs47iS3aSIq\nJIm2suVIyp7EZ4NZtzplzo3g1bCM3t7OAkYdGdpeFxvLKQc8Zz0zinJu7BbHRfYm/wCfg/8AftP8\nKPsTf8/B/wC/af4Vw2s6Rrt9Bpsmmi8xChEyefJDk5LfKrtnPGMscHcOcChLPWI/FlwFgu/snzlZ\n/KZjIdmADnCk57k4OM98UrsZ3P2Jv+fg/wDftP8ACl+xN/z8H/v2n+Fc54L0e/0mS9+1idVlY7Vd\nwy/KzAHoCDjHbB6+1ddRdgVPsTf8/B/79p/hR9ib/n4P/ftP8Kt0UXYFUWsoGBdOB/uJ/hS/Z5h/\ny9yf98L/AIVZoo5mKxX+zzf8/cn/AHwv+FH2eb/n7k/74X/CrFFHMwsV/s83/P3J/wB8L/hR9nm/\n5+5P++F/wqxRRzMLFf7PN/z9yf8AfC/4UfZ5v+fuT/vhf8KsUUczCxX+zzf8/cn/AHwv+FH2eb/n\n7k/74X/CrFFHMwsV/s83/P3J/wB8L/hR9nm/5+5P++F/wqxRRzMLFf7PN/z9yf8AfC/4UfZ5v+fu\nT/vhf8KsUUczCxX+zzf8/cn/AHwv+FH2eb/n7k/74X/CrFFHMwsV/s83/P3J/wB8L/hR9nm/5+5P\n++F/wqxRRzMLFf7PN/z9yf8AfC/4UfZ5v+fuT/vhf8KsUUczCxX+zzf8/cn/AHwv+FH2eb/n7k/7\n4X/CrFFHMwsV/s83/P3J/wB8L/hR9nm/5+5P++F/wqxRRzMLFf7PN/z9yf8AfC/4UfZ5v+fuT/vh\nf8KsUUczCxX+zzf8/cn/AHwv+FH2eb/n7k/74X/CrFFHMwsV/s83/P3J/wB8L/hR9nm/5+5P++F/\nwqxRRzMLFf7PN/z9yf8AfC/4UfZ5v+fuT/vhf8KsUUczCxX+zzf8/cn/AHwv+FQ3cEws5ibtz+7b\njYvp9KvVDef8eU//AFzb+RpqTuJrQkT/AFa/QU6mp/q1+gp1SUFFFFABRRRQAUUUUAFFFFABRRRQ\nAUUUUAFFFFABRRRQAU1/9W30NOpr/wCrb6GgDhtSurSLV7VZrS/chIyXjnCBiUJAUN2AVskEHJPX\ntUj1HR7mLMeivGs0RhWKORCjuxRsng5xlPm5CkkEeu+bG2u1immsmZyi7sXTAMNoGCBxjHanR6bZ\nRwpEunHy0bcqtdu3zYUZyec4UD6Z9atxdyU1Y5e98Q6eNLhmWwvUR7mRVDXYADAAs5yGyWDcgjBJ\nP1ra0nSPDuqR6ZM0cn2preK7jheYh1AUgE7cZI3Hn6YwBU8WhaXBa/ZoNK8qLdvAS7fhsAZ+uFAr\nTtnFnHGkNkoEabFZptzbc5xuIJP50uVj5kVovBekQuSiTBWiELp5mAyjoD+Q/Km3HgjSLjThYBZI\nrVZmnEcW1QGIxx8vAxkfic5rT/tCf/n1X/v7/wDWo/tCf/n1X/v7/wDWo5WHMiBfDOn+fbzuJHmg\nTZHIXwVHy4xjGMbe2ByfWrculWkti9mI/Khd/MYRHYSxfeTkdy3J+tR/2hP/AM+q/wDf3/61H9oT\n/wDPqv8A39/+tRysOZFWPwtp6Wa2he6MKMTGonZBGMBcDbjjAI98nOcmkbwppj3Mdy4uHuE2fvXm\nZmbYcruJ+96c9R1q3/aE/wDz6r/39/8ArUf2hP8A8+q/9/f/AK1HKw5kQN4Z054WjdJHDoUfc5O7\npg46AjaMYAxgDoKZc+FtOuoZ428xRM7MSpGVBTYVGR93Hb/61Wv7Qn/59V/7+/8A1qP7Qn/59V/7\n+/8A1qOVhzIq/wDCK6YTE7Rs08ToyzELv+XZgZxgD5F6Ad/U1eGlWi2f2ZY8LggsPvnP3ju65OTk\n+5qP+0J/+fVf+/v/ANaj+0J/+fVf+/v/ANajlYcyKs/hXTJ5/MdJAm5WEKNtjG0EY2gYIO5uvc1W\nl8EaTNf296/2jzoPLwRL98oxZS3HJyevetP+0J/+fVf+/v8A9aj+0J/+fVf+/v8A9ajlYcyI5/D2\nnXFrPbGELFNjcAB8owFIXIOMgY/+vU2n6RaaY8rWysvmKisCc/dBA/Hnr9Kb/aE//Pqv/f3/AOtR\n/aE5/wCXVf8Av7/9ajlYcyG/N/Ztp/rPK483y87tuD6c4zjOKydc1e90iyt2tNojmuSga5RmKxiN\nmJxnP3hxmrkGtLb20McixK2wHDTAHHr0pX1y2k270tm2nIzMDg+vSnKLuxJ6HIXfjvWk03Sp4LaF\n5pFla5RISwwr7U/i+XIyTnpxkitI+KNRXxTdacwwsZdijqqhFCZB39B1HJz19iK2F1LTlh8lbWyE\nXHyB128HI42+tM+26X9oM/2LT/OJLGTcm4n1ztzS5WO5X8HavqmpSXialJE4RsRlV2NwSp4IGRkd\nfw611lYaa5bRj5Etl5J4mA5Jye3c807/AISCH/ph/wB/x/hRysLm1RWL/wAJBD/0w/7/AI/wpya6\nkrhEWFnboonGT+lHKwubFFZ39oT/APPqv/f3/wCtVb/hIYSMgwY/67j/AAo5WF0bVFYv/CQQ/wDT\nD/v+P8KP+Egh/wCmH/f8f4UcrC5tUVi/8JBD/wBMP+/4/wAKP+Egh/6Yf9/x/hRysLm1RWL/AMJB\nD/0w/wC/4/wo/wCEgh/6Yf8Af8f4UcrC5tUVlxau06loYo5ADglZgcH8qf8A2hP/AM+q/wDf3/61\nHKw5kaNFZ39oT/8APqv/AH9/+tR/aE//AD6r/wB/f/rUcrDmRo0Vnf2hP/z6r/39/wDrUf2hP/z6\nr/39/wDrUcrDmRo0Vnf2hP8A8+q/9/f/AK1H9oT/APPqv/f3/wCtRysOZGjRWd/aE/8Az6r/AN/f\n/rUf2hP/AM+q/wDf3/61HKw5kaNFZ39oT/8APqv/AH9/+tR/aE//AD6r/wB/f/rUcrDmRo0Vnf2h\nP/z6r/39/wDrUf2hP/z6r/39/wDrUcrDmRo0Vnf2hP8A8+q/9/f/AK1H9oT/APPqv/f3/wCtRysO\nZGjRWd/aE/8Az6r/AN/f/rUf2hP/AM+q/wDf3/61HKw5kaNFZ39oT/8APqv/AH9/+tR/aE//AD6r\n/wB/f/rUcrDmRo0Vnf2hP/z6r/39/wDrUf2hP/z6r/39/wDrUcrDmRo0Vnf2hP8A8+q/9/f/AK1H\n9oT/APPqv/f3/wCtRysOZGjUN5/x5T/9c2/kaqf2hP8A8+q/9/f/AK1RXN/M1rMDbKAUb/lr7fSm\nou4m1Y1E/wBWv0FOpqf6tfoKdUFBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFNf7jf\nQ06mv9xvoaAMa3/49of+ua/yFSVHb/8AHtD/ANc1/kKkrR7kLYKKKKACiiigAooooAKKKKACiiig\nAooooAKKKKAClHUfWkpR1H1oAyrYkSHBP+pi/wDZqtZPqfzqrbf6w/8AXGL/ANmqzUy+JlR2QuT6\nn86oNrVkl+bJp2E4YJgo2CT2z07H8qvVzs3hqSXxOusC6jCBwxh2vyQMZzu69DjpkD6VIzSfXbCL\nVk0t53W7kOFQo2Cdpbr06A/lWjk+p/OsSTw9FJro1QzLuByI/KGM7lOT6n5evXPPsdqgBcn1P51F\nISZ7Xk/64f8AoLVJUb/6+1/67D/0FqEBdf8A1b/7p/lVG1J+xwcn/Vr39hV9/wDVv/un+VZ9r/x5\nwf8AXNf5CqkJE+T6n86a8nlozsWwoycZJ/KlqC9theWM9qSoEyFCWXcADxnB6/41IyvBrmn3UFxP\nDdh4bdd0kgztA5/PpU1rqNteSPHBMzOgBZSjqQCSM/MB3B/Ksmy8OvaadeWn2mLM8KxJIIjlcZwS\nCeeucDHOT3qzpOijSp53WdXSVQAgjK4O4knljnqPyoA18n1P50ZPqfzpKKACz/111/vr/wCgCrdV\nLL/XXX++v/oAq3VrYlhRRRTEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF\nABUdx/x7Tf8AXNv5GpKjuP8Aj2m/65t/I0LcHsbKfcX6CnU1PuL9BTqzLCiiigAooooAKKKKACii\nigAooooAKKKKACiiigAooooAKRhlSPUUtFAGTHY3kcSJ+4O1QM7m7D6U77JeekH/AH03+FalFVzs\nnlMv7JeekH/fTf4UfZLz0g/76b/CtSijmHymX9kvPSD/AL6b/Cj7JeekH/fTf4VqUUcwcpl/ZLz0\ng/76b/Cj7JeekH/fTf4VqUUcwcpl/ZLz0g/76b/Cj7JeekH/AH03+FalFHMHKZf2S89IP++m/wAK\nPsl56Qf99N/hWpRRzBymX9kvPSD/AL6b/Cj7JeekH/fTf4VqUUcwcpl/ZLz0g/76b/Cj7JeekH/f\nTf4VqUUcwcpl/ZLz0g/76b/ClFpeZ6Qf99N/hS3N5cw3UiqhKouUjELN5vH94cDn27e9Vxrcw8wt\nZNtjUF9pbPboCo654HX2FHMHKRjRZ8LlkDBQpKTOuQM44H1NL/Ys/wDz0P8A4ESVLdatc2kTSzWq\nogyMlztyMdTt79BipLW9vnuooprcLG+8l8N0ydo6YBwP5Uc1w5bFb+xZ/wDnof8AwIko/sWf/nof\n/AiSrGn6hc3N7cRSooVCRtEbAp6ZJ4OfaoBqV+UDJEXyGxm3dS3XkjPy4wOO+fWjm8gsJ/Ys/wDz\n0P8A4ESUf2LP/wA9D/4ESVYt728edFaIyIYySBEUOd2AcsccjnHUUyPULx5kATdGZSuTbupIyPXp\ngEnPfFHN5BYi/sWf/nof/AiSlXR50kR8qxQ5XdO5GcY6fjVm1vbqaa0DJ8skZMo8l12nnnJ6fTrU\nX268KZb5CWw4+yufJ6+/zdAMj60c3kFiQ2d4QQRb4P8AtN/hVVdEmVQqvhQMAfaJOBTpdR1NHdVg\nDKGXDiFsEHJxjOc9OvQnFTXmoX9tdSLHZGaED5CqnPC5OT9SOfYjrRzBYg/sWf8A56H/AMCJKP7F\nn/56H/wIkqRNWvsZfTXbc2AE3fKMLycjnk9vQ+lK2p37xOY7B9y5J65OCPlGQMnk+3HU0c3kFiL+\nxZ/+eh/8CJKP7Fn/AOeh/wDAiSrc9/coLVorV3D/ADTYQnavTHODnnPQ9DxVddZuyozpzg7ck4fA\nOcf3en86ObyCwz+xZ/8Anof/AAIko/sWf/nof/AiSpZNWu1R3GnyZUcRkNnPHU7fc9M+9Iuq3oG5\n7F8lsbQG4GTgH5euMe3Pajm8gsLDplxbhtnlEscsXkdieMdx7VJ9kvPSD/vpv8KsWt3NMrCa2aJ8\nblHJBGB1OBzz0qjb6lqTW6M1msjlct95MHBOMbfb9RRzByk32S89IP8Avpv8KPsl56Qf99N/hTF1\nK8mnKLZSxqsoXcVJBXIznjjvU9zfzwpCUtGkLpuIG7g46fd/njpRzBykf2S89IP++m/wo+yXnpB/\n303+FM/tO+YIy2OELKCx3njIycbc4weP1FRjWL54gVsDG27HzhyCMjJGF9PX8M0cwrE/2S89IP8A\nvpv8KPsl56Qf99N/hVaDV755rgPagojhRhHGz68HP4DuKfJqeoEq0dp8pDZXYxKkDv09hxnOTRzD\n5Sb7JeekH/fTf4UfZLz0g/76b/CkXUrlbe3LWrvIxw+EZR14xx3HPOBxzinWupyzX62ksCxuYvMI\nDEkdPYcc4+oPFHMHKJ9kvPSD/vpv8KPsl56Qf99N/hWpRRzBymX9kvPSD/vpv8KPsl56Qf8AfTf4\nVqUUcwcpl/ZLz0g/76b/AAo+yXnpB/303+FalFHMHKZf2S89IP8Avpv8KPsl56Qf99N/hWpRRzBy\nmX9kvPSD/vpv8KPsl56Qf99N/hWpRRzBymX9kvPSD/vpv8KPsl56Qf8AfTf4VpkgdaN49aOZ9hWM\nz7JeekH/AH03+FH2S89IP++m/wAK0949aN49aOZ9gsjM+yXnpB/303+FNksbySJ0/cDcpGdzdx9K\n1d49aN49afM+wWQKMKB6ClpN49aN49agoWik3j1o3j1oAWik3j1oBB6UALRRRQAUUUUAFFFFABRR\nRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAEA9RRRRQA\nUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRgZzjmiigAooooAKK\nKKACiiigAooooAKKKKAGt2+tFKQD1o2D0piGOGK4U4ORTD5pYcYAP51NsHpRsHpQBETJk/KKTM2f\nuiptg9KNg9KAIj5mBxznoOhpN0oYDA5qbYPSjaPT9aAEopdg9KNg9KAEoH3j9KXYPSgADpQAtFFF\nIYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA\nBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF\nFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU\nUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR\nQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA\nBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF\nFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU\nUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR\nQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA\nBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF\nFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU\nUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR\nQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA\nBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF\nFFFABRRRQB//2Q==\n", "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Cookie\n", "\n", "Cookie\u662fHTTP\u534f\u8bae\u5934\u4e2d\u7684\u4e00\u5c0f\u6bb5\u6570\u636e, \u6d4f\u89c8\u5668\u901a\u5e38\u5c06\u5176\u4fdd\u5b58\u5728\u672c\u5730, \u7528\u6765\u5b58\u50a8\u7528\u6237\u4e0e\u7f51\u7ad9\u4ea4\u4e92\u8fc7\u7a0b\u4e2d\u7684\u72b6\u6001.\n", "\n", "\u4e0b\u9762\u662f\u4e00\u4e2a\u6765\u81ea[\u7ef4\u57fa\u767e\u79d1](http://zh.wikipedia.org/wiki/Cookie)Cookie\u5e94\u7528\u7684\u5178\u578b\u4f8b\u5b50:\n", "\n", "> \u56e0\u4e3aHTTP\u534f\u8bae\u662f\u65e0\u72b6\u6001\u7684\uff0c\u5373\u670d\u52a1\u5668\u4e0d\u77e5\u9053\u7528\u6237\u4e0a\u4e00\u6b21\u505a\u4e86\u4ec0\u4e48\uff0c\u8fd9\u4e25\u91cd\u963b\u788d\u4e86\u4ea4\u4e92\u5f0fWeb\u5e94\u7528\u7a0b\u5e8f\u7684\u5b9e\u73b0\u3002\u5728\u5178\u578b\u7684\u7f51\u4e0a\u8d2d\u7269\u573a\u666f\u4e2d\uff0c\u7528\u6237\u6d4f\u89c8\u4e86\u51e0\u4e2a\u9875\u9762\uff0c\u4e70\u4e86\u4e00\u76d2\u997c\u5e72\u548c\u4e24\u74f6\u996e\u6599\u3002\u6700\u540e\u7ed3\u5e10\u65f6\uff0c\u7531\u4e8eHTTP\u7684\u65e0\u72b6\u6001\u6027\uff0c\u4e0d\u901a\u8fc7\u989d\u5916\u7684\u624b\u6bb5\uff0c\u670d\u52a1\u5668\u5e76\u4e0d\u77e5\u9053\u7528\u6237\u5230\u5e95\u4e70\u4e86\u4ec0\u4e48\u3002 \u6240\u4ee5Cookie\u5c31\u662f\u7528\u6765\u7ed5\u5f00HTTP\u7684\u65e0\u72b6\u6001\u6027\u7684\u201c\u989d\u5916\u624b\u6bb5\u201d\u4e4b\u4e00\u3002\u670d\u52a1\u5668\u53ef\u4ee5\u8bbe\u7f6e\u6216\u8bfb\u53d6Cookies\u4e2d\u5305\u542b\u4fe1\u606f\uff0c\u501f\u6b64\u7ef4\u62a4\u7528\u6237\u8ddf\u670d\u52a1\u5668\u4f1a\u8bdd\u4e2d\u7684\u72b6\u6001\u3002\n", "> \n", "> \u5728\u521a\u624d\u7684\u8d2d\u7269\u573a\u666f\u4e2d\uff0c\u5f53\u7528\u6237\u9009\u8d2d\u4e86\u7b2c\u4e00\u9879\u5546\u54c1\uff0c\u670d\u52a1\u5668\u5728\u5411\u7528\u6237\u53d1\u9001\u7f51\u9875\u7684\u540c\u65f6\uff0c\u8fd8\u53d1\u9001\u4e86\u4e00\u6bb5Cookie\uff0c\u8bb0\u5f55\u7740\u90a3\u9879\u5546\u54c1\u7684\u4fe1\u606f\u3002\u5f53\u7528\u6237\u8bbf\u95ee\u53e6\u4e00\u4e2a\u9875\u9762\uff0c\u6d4f\u89c8\u5668\u4f1a\u628aCookie\u53d1\u9001\u7ed9\u670d\u52a1\u5668\uff0c\u4e8e\u662f\u670d\u52a1\u5668\u77e5\u9053\u4ed6\u4e4b\u524d\u9009\u8d2d\u4e86\u4ec0\u4e48\u3002\u7528\u6237\u7ee7\u7eed\u9009\u8d2d\u996e\u6599\uff0c\u670d\u52a1\u5668\u5c31\u5728\u539f\u6765\u90a3\u6bb5Cookie\u91cc\u8ffd\u52a0\u65b0\u7684\u5546\u54c1\u4fe1\u606f\u3002\u7ed3\u5e10\u65f6\uff0c\u670d\u52a1\u5668\u8bfb\u53d6\u53d1\u9001\u6765\u7684Cookie\u5c31\u884c\u4e86\u3002\n", "\n", "\u5f53\u7528\u6237\u767b\u5f55\u7f51\u7ad9\u65f6\u52fe\u9009\u4e86\"\u4e0b\u6b21\u81ea\u52a8\u767b\u5f55\", \u7528\u6237\u540d\u548c\u5bc6\u7801\u5c31\u4f1a\u88ab\u52a0\u5bc6\u4fdd\u5b58\u5728Cookie\u4e2d. \u7528\u6237\u4e0b\u6b21\u767b\u5f55\u65f6, \u6d4f\u89c8\u5668\u4f1a\u5c06\u8be5Cookie\u53d1\u9001\u7ed9\u7f51\u7ad9, \u7f51\u7ad9\u9a8c\u8bc1\u52a0\u5bc6\u4fe1\u606f, \u4ece\u800c\u8bc6\u522b\u8be5\u7528\u6237.\n", "\n", "`urllib2`\u672c\u8eab\u5e76\u4e0d\u5177\u5907\u4fdd\u5b58Cookie\u7684\u529f\u80fd, \u9700\u8981\u501f\u52a9`cookielib`:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import urllib\n", "import urllib2\n", "from cookielib import CookieJar\n", "\n", "login_url = 'http://www.cc98.org/login.asp'\n", "posts_url = 'http://www.cc98.org/queryresult.asp?stype=3'\n", "\n", "# \u4fdd\u5b58\u4e86Cookie\u7684\u5bf9\u8c61\n", "opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(CookieJar()))\n", "# \u7528opener\u767b\u5f55, Cookie\u88ab\u4fdd\u5b58\u4e0b\u6765\n", "opener.open(login_url, urllib.urlencode(dict(\n", " username='answeror',\n", " password='42',\n", " action='chk'\n", ")))\n", "# \u4f7f\u7528\u4fdd\u5b58\u4e86\u7528\u6237\u51ed\u636e\u7684opener\u8bbf\u95ee\u9875\u9762\n", "data = opener.open(posts_url).read()\n", "print data" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "\r\n", "\r\n", "\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\u641c\u7d22\u7ed3\u679c » CC98\u8bba\u575b\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t
    \r\n", "\r\n", "\t\t\t\t\r\n", "\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t\t\t\r\n", "\t\t\t\t\t\r\n", "\t\t\t\t
    \r\n", "\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t
    \r\n", "\t\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\t
    \r\n", "\t\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t
    \r\n", "\t\t\t\t\t\t\t\t\t\t\u52a0\u5165\u6536\u85cf
    \r\n", "\t\t\t\t\t\t\t\t\t\t\u8bbe\u4e3a\u9996\u9875
    \r\n", "\t\t\t\t\t\t\t\t\t\t\u641c\u7d22\u7248\u9762
    \r\n", "\t\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t
    \r\n", "\t\t\t\t\t\t
    \r\n", "\t\t\t\t\t\t\t
    \r\n", "\t\t\t\t\t\t\t\t
    \r\n", "\t\t\t\t\t\t\t\t\t  \r\n", "\t\t\r\n", "\t\t\t\t\t\t\t\t\tansweror  \r\n", "\t\t\t\u8d26\u53f7\u9009\u9879\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\u63a7\u5236\u9762\u677f\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\u8bba\u575b\u641c\u7d22\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\u8bba\u575b\u72b6\u6001\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\u8bba\u575b\u9644\u4ef6\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\u8bba\u575b\u5e2e\u52a9\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\tSimple\u7248\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t\t\r\n", "\t\t\t\t\t\t\t\t
    \r\n", "\t\t\t\t\t\t\t\t
    \r\n", "\t\t\t\t\t\t\t
    \r\n", "\t\t\t\t\t\t
    \r\n", "\r\n", "\t\t\t\t\r\n", "\t\t\t
    \r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t
    \r\n", "\t\t\t\t\r\n", "\t\t\t\t\r\n", "\t\t\t\t\u6211\u7684\u6536\u4ef6\u7bb1 (0 \u65b0)\r\n", "\t\t\r\n", "\t\t\t
    \r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t
    \r\n", "\t\t\t\t\r\n", "\t\t\t\t\r\n", "\t\t\t\t\r\n", "\t\t\t\twww.cc98.org \u2192 \r\n", "\t\t\t\t\u8bba\u575b\u641c\u7d22 \u2192 \u641c\u7d22\u7ed3\u679c\r\n", "\t\t\t\t\r\n", "\t\t\t
    \r\n", "\t
    \r\n", "\t\r\n", "\r\n", "\t\r\n", "\t\t\r\n", "\t\r\n", "
    \u67e5\u8be2\u5929\u5185\u6709\u56de\u590d\u7684\u5e16\u5b50\uff0c\u67e5\u770b\u65b0\u8d34\u5171\u67e5\u8be2\u5230\r\n", "\t\t\t100\u4e2a\u7ed3\u679c\r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\t\t\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "\t\r\n", "\t\t\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\r\n", "\t\t\r\n", "\t\r\n", "\t\r\n", "
    \u4e3b \u9898\u7248 \u9762\u4f5c \u8005\u53d1\u8d34\u65e5\u671f
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t\u611a\u8822\u7684Logo\u8bbe\u8ba1\u6848\u4f8b(\u4e3a\u4ec0\u4e48\u6211\u4e00\u4e2a\u4e5f\u770b\u4e0d\u61c2\uff0c\u4e00\u5b9a\u662f\u6211\u592a\u7eaf\u6d01\u4e86)\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t自由贴图\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t\u7a7f\u5c71\u4e59\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/15/2013 \r\n", "\t\t\t00:21 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t[\u6c42][\u7b14\u8bb0\u672c]\u6025\u6c42 \u7b14\u8bb0\u672c\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t电脑数码\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t\u65e0\u5929\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/15/2013 \r\n", "\t\t\t00:15 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\tIGSS\u9879\u76ee \u975e\u7406\u5de5\u79d1\u7684\u540c\u5b66\u53ef\u4ee5\u770b\u770b\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t浙江大学出国留学学生圈SOSA\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\tchenkun\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/15/2013 \r\n", "\t\t\t00:10 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t\u6c42\u95ee \u6211\u7684htc onex(g23) \u624b\u673a\u5361\u63d2\u8fdb\u53bb\u6ca1\u53cd\u5e94 \u4e00\u76f4\u90fd\u641c\u5230sim\u5361\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t数码世界\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\tfuwen0202\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/15/2013 \r\n", "\t\t\t00:07 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t\u7a81\u7136\u610f\u8bc6\u5230\uff0c\u5927\u56db\u4ea4\u6d41\u5e26\u6765\u4e00\u4e2a\u4e25\u5cfb\u7684\u95ee\u9898\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t软件工程\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\tcgwy\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/15/2013 \r\n", "\t\t\t00:04 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t[LIVE]\u00a0\u6c34\u6a39\u5948\u3005\u521d\u306e\u6d77\u5916\u516c\u6f14\u6c7a\u5b9a\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\tACG音乐区\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t\u4f0a\u8336\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/15/2013 \r\n", "\t\t\t00:01 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t\u4e34\u65f6\u627e\u6765\u7684\u56fe\u7247\uff0c\u5e86\u795d\u7535\u8111\u91cd\u88c5\u53d1\u4e00\u4e0b\u67d0\u573a\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t暑假·2013\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\tendless07\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/14/2013 \r\n", "\t\t\t23:54 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\tsurface rt \u6765\u5566\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t暑假·2013\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t\u541b\u4e4b\u98ce\u8303\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/14/2013 \r\n", "\t\t\t23:49 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t[\u5f81][\u517c\u804c]\u7535\u8bdd\u9500\u552e\u4ee5\u53ca\u9500\u552e\u4e3b\u7ba1\uff08\u505a\u7684\u662f\u7535\u53f0\u548c\u7535\u89c6\u8282\u76ee\u4e1a\u52a1\uff09\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t实习兼职\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t\u7af9\u5c45\u8d24\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/14/2013 \r\n", "\t\t\t23:43 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t\u53f2\u4e0a\u6700\u6de1\u5b9a\u9009\u624bDD\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t魔兽RPG专区\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t\u6de1\u58a8\u9752\u886b\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/14/2013 \r\n", "\t\t\t23:34 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t\uff08\u7389\u6cc9\uff09\u6253\u724c\uff0c\u684c\u6e38\uff0c\u6709\u4eba\u7ec4\u7ec7\u4e48\uff1f\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t暑假·2013\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t\u897f\u6e56\u751c\u918b\u9c7c\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/14/2013 \r\n", "\t\t\t23:32 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t\u51fa\u7eff\u8336100\u5143\u4ee3\u91d1\u52383\u5f20\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t美食天地\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\twang7721\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/14/2013 \r\n", "\t\t\t23:27 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t\u8ddf\u4e0d\u50b2\u6c14\u7684\u725b\u4eba\u5728\u4e00\u8d77\u7684\u65f6\u5019\uff0c\u7279\u522b\u6709\u5b89\u5168\u611f\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t情感空气\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\tfindbeauty\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/14/2013 \r\n", "\t\t\t23:26 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t\u3010\u51fa\u3011\u7eff\u8336\u9910\u5385100\u5143\u4ee3\u91d1\u52383\u5f20\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t生活点滴\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\twang7721\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/14/2013 \r\n", "\t\t\t23:24 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t[\u6362][\u5e73\u677f]ipadmini\u6c42\u6362ipad4\u53ef\u4ee5\u5417\uff1f\u8865\u5dee\u4ef7\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t电脑数码\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t\u5f53\u51ac\u591c\u6e10\u6696\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/14/2013 \r\n", "\t\t\t23:24 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t\u7f18\u6765\u662f\u4f60\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t缘分天空\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t\u5e26\u9c7c\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/14/2013 \r\n", "\t\t\t23:22 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t\u5efa\u4e2a\u697c\u8bb0\u5f55\u5b9e\u4e60\u7684\u89c1\u95fb\u5427\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t气象万千\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t\u6c34\u6728\u6e05\u89c1\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/14/2013 \r\n", "\t\t\t23:21 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t\u6c42\u4e2a\u7389\u6cc9\u591c\u5bb5\u5916\u5356\u7535\u8bdd\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t暑假·2013\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\txuedine\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/14/2013 \r\n", "\t\t\t23:19 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t\u7b49\u5929\u51c9\u4e86\u6211\u5c31\u51fa\u67dc\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t开怀一笑\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\tsixfancy\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/14/2013 \r\n", "\t\t\t23:18 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "\t\t\t\r\n", "\t\t\t\t\"\u5f00\u65b0\u7a97\u53e3\u6d4f\u89c8\u6b64\u4e3b\u9898\"\r\n", "\r\n", "\t\t\t\r\n", "\t\t\t\t\u3010\u6765\u4e00\u65a4\u51c9\u62cc\u7325\u7410\uff01\u4e0d\u8981\u8282\u64cd\uff01\u3011WS\u4e13\u697c\u2014\u2014\u732e\u7ed9\u6211\u5927\u6570\u5b66\u7cfb\u4f17\u591aWSN\uff08\u542bLZ\uff09\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t数学之韵\r\n", "\t\t\t\r\n", "\t\t\r\n", "\t\t\t\r\n", "\t\t\t\u2605\u2192B52\r\n", "\t\t\t\r\n", "\t\t \r\n", "\t\t\t7/14/2013 \r\n", "\t\t\t23:15 \r\n", "\t\t\t\r\n", "\t\t
    \r\n", "
    \u9875\u6b21\uff1a1/5\u9875\u6bcf\u987520 \u5e16\u5b50\u6570100

    \u5206\u9875\uff1a [1] [2] [3] [4]... [5]

    \r\n", "\t
    Copyright © 2003-2013 CC98 Network Association. Email: contact@cc98.org
    \r\n", "\t\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "\r\n", "\n" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## \u89e3\u6790XML\n", "\n", "\u6211\u4eec\u9700\u8981\u63d0\u53d6\u5e16\u5b50\u7684\u6807\u9898\u548c\u94fe\u63a5. \u4ec5\u4ec5\u4f7f\u7528`re`\u662f\u6bd4\u8f83\u56f0\u96be\u7684. \u6211\u4eec\u9700\u8981\u66f4\u52a0\"\u67b6\u6784\u5316\"\u7684\u6587\u672c\u5206\u6790\u5de5\u5177:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import bs4\n", "import re\n", "\n", "soup = bs4.BeautifulSoup(data)\n", "\n", "def ispost(t):\n", " return (\n", " t.name == 'a'\n", " and len(t.contents) == 1\n", " and type(t.contents[0]) is bs4.NavigableString\n", " and t.has_attr('href')\n", " and re.match(r'dispbbs.*', t['href'])\n", " )\n", "\n", "posts = soup.find_all(ispost)\n", "print posts" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[\r\n", "\t\t\t\t\u611a\u8822\u7684Logo\u8bbe\u8ba1\u6848\u4f8b(\u4e3a\u4ec0\u4e48\u6211\u4e00\u4e2a\u4e5f\u770b\u4e0d\u61c2\uff0c\u4e00\u5b9a\u662f\u6211\u592a\u7eaf\u6d01\u4e86)\r\n", "\t\t\t, \r\n", "\t\t\t\t[\u6c42][\u7b14\u8bb0\u672c]\u6025\u6c42\u00a0\u7b14\u8bb0\u672c\r\n", "\t\t\t, \r\n", "\t\t\t\tIGSS\u9879\u76ee\u00a0\u975e\u7406\u5de5\u79d1\u7684\u540c\u5b66\u53ef\u4ee5\u770b\u770b\r\n", "\t\t\t, \r\n", "\t\t\t\t\u6c42\u95ee\u00a0\u6211\u7684htc\u00a0onex(g23)\u00a0\u624b\u673a\u5361\u63d2\u8fdb\u53bb\u6ca1\u53cd\u5e94\u00a0\u4e00\u76f4\u90fd\u641c\u5230sim\u5361\r\n", "\t\t\t, \r\n", "\t\t\t\t\u7a81\u7136\u610f\u8bc6\u5230\uff0c\u5927\u56db\u4ea4\u6d41\u5e26\u6765\u4e00\u4e2a\u4e25\u5cfb\u7684\u95ee\u9898\r\n", "\t\t\t, \r\n", "\t\t\t\t[LIVE]\u00a0\u6c34\u6a39\u5948\u3005\u521d\u306e\u6d77\u5916\u516c\u6f14\u6c7a\u5b9a\r\n", "\t\t\t, \r\n", "\t\t\t\t\u4e34\u65f6\u627e\u6765\u7684\u56fe\u7247\uff0c\u5e86\u795d\u7535\u8111\u91cd\u88c5\u53d1\u4e00\u4e0b\u67d0\u573a\r\n", "\t\t\t, \r\n", "\t\t\t\tsurface\u00a0rt\u00a0\u6765\u5566\r\n", "\t\t\t, \r\n", "\t\t\t\t[\u5f81][\u517c\u804c]\u7535\u8bdd\u9500\u552e\u4ee5\u53ca\u9500\u552e\u4e3b\u7ba1\uff08\u505a\u7684\u662f\u7535\u53f0\u548c\u7535\u89c6\u8282\u76ee\u4e1a\u52a1\uff09\r\n", "\t\t\t, \r\n", "\t\t\t\t\u53f2\u4e0a\u6700\u6de1\u5b9a\u9009\u624bDD\r\n", "\t\t\t, \r\n", "\t\t\t\t\uff08\u7389\u6cc9\uff09\u6253\u724c\uff0c\u684c\u6e38\uff0c\u6709\u4eba\u7ec4\u7ec7\u4e48\uff1f\r\n", "\t\t\t, \r\n", "\t\t\t\t\u51fa\u7eff\u8336100\u5143\u4ee3\u91d1\u52383\u5f20\r\n", "\t\t\t, \r\n", "\t\t\t\t\u8ddf\u4e0d\u50b2\u6c14\u7684\u725b\u4eba\u5728\u4e00\u8d77\u7684\u65f6\u5019\uff0c\u7279\u522b\u6709\u5b89\u5168\u611f\r\n", "\t\t\t, \r\n", "\t\t\t\t\u3010\u51fa\u3011\u7eff\u8336\u9910\u5385100\u5143\u4ee3\u91d1\u52383\u5f20\r\n", "\t\t\t, \r\n", "\t\t\t\t[\u6362][\u5e73\u677f]ipadmini\u6c42\u6362ipad4\u53ef\u4ee5\u5417\uff1f\u8865\u5dee\u4ef7\r\n", "\t\t\t, \r\n", "\t\t\t\t\u7f18\u6765\u662f\u4f60\r\n", "\t\t\t, \r\n", "\t\t\t\t\u5efa\u4e2a\u697c\u8bb0\u5f55\u5b9e\u4e60\u7684\u89c1\u95fb\u5427\r\n", "\t\t\t, \r\n", "\t\t\t\t\u6c42\u4e2a\u7389\u6cc9\u591c\u5bb5\u5916\u5356\u7535\u8bdd\r\n", "\t\t\t, \r\n", "\t\t\t\t\u7b49\u5929\u51c9\u4e86\u6211\u5c31\u51fa\u67dc\r\n", "\t\t\t, \r\n", "\t\t\t\t\u3010\u6765\u4e00\u65a4\u51c9\u62cc\u7325\u7410\uff01\u4e0d\u8981\u8282\u64cd\uff01\u3011WS\u4e13\u697c\u2014\u2014\u732e\u7ed9\u6211\u5927\u6570\u5b66\u7cfb\u4f17\u591aWSN\uff08\u542bLZ\uff09\r\n", "\t\t\t]\n" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "print posts[0]['href']\n", "print posts[0].string.strip()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "dispbbs.asp?boardID=16&ID=4223274\n", "\u611a\u8822\u7684Logo\u8bbe\u8ba1\u6848\u4f8b(\u4e3a\u4ec0\u4e48\u6211\u4e00\u4e2a\u4e5f\u770b\u4e0d\u61c2\uff0c\u4e00\u5b9a\u662f\u6211\u592a\u7eaf\u6d01\u4e86)\n" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "\u66f4\u591a\u7528\u6cd5\u53c2\u89c1[BeautifulSoup\u6587\u6863](http://www.crummy.com/software/BeautifulSoup/bs4/doc/).\n", "\n", "\u5982\u679c\u5bf9JQuery\u719f\u6089, \u63a8\u8350\u4f7f\u7528[pyquery](https://pypi.python.org/pypi/pyquery)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## GUI\n", "\n", "\u5efa\u8bae\u8bfe\u540e\u9605\u8bfb[PyQt\u6559\u7a0b](http://zetcode.com/tutorials/pyqt4/).\n", "\n", "\u4e0b\u9762\u7684\u7a0b\u5e8f\u4e0d\u80fd\u5728IPython notebook\u4e2d\u8fd0\u884c(\u53ef\u4ee5\u8fd0\u884c, \u4f46\u662f\u4e0d\u80fd\u6b63\u5e38\u7ed3\u675f), \u9700\u8981\u653e\u5230\u72ec\u7acb\u7684\u811a\u672c\u6587\u4ef6\u91cc, \u4ece\u547d\u4ee4\u884c\u8fd0\u884c." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from PyQt4.QtGui import (\n", " QApplication,\n", " QSystemTrayIcon,\n", " QIcon,\n", " QMenu,\n", " QDesktopServices,\n", " QWidget\n", ")\n", "from PyQt4.QtCore import (\n", " QTimer,\n", " QUrl\n", ")\n", "from urlparse import urljoin\n", "from urllib import urlencode\n", "import re\n", "import bs4\n", "import urllib2\n", "from cookielib import CookieJar\n", "import sys\n", "\n", "\n", "base_url = 'http://www.cc98.org'\n", "login_url = 'http://www.cc98.org/login.asp'\n", "posts_url = 'http://www.cc98.org/queryresult.asp?stype=3'\n", "\n", "\n", "def ispost(t):\n", " return (\n", " t.name == 'a'\n", " and len(t.contents) == 1\n", " and type(t.contents[0]) is bs4.NavigableString\n", " and t.has_attr('href')\n", " and re.match(r'dispbbs.*', t['href'])\n", " )\n", "\n", "\n", "class Tray(QSystemTrayIcon):\n", "\n", " def __init__(self, icon, parent=None):\n", " super(Tray, self).__init__(icon, parent)\n", " menu = QMenu(parent)\n", " exit = menu.addAction('&Exit')\n", " exit.triggered.connect(QApplication.instance().quit)\n", " self.setContextMenu(menu)\n", " self.cached_post = None\n", " self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(CookieJar()))\n", " self.messageClicked.connect(self.openurl)\n", " self.login()\n", "\n", " def last_post(self):\n", " data = self.opener.open(posts_url).read()\n", " soup = bs4.BeautifulSoup(data)\n", " post = soup.find_all(ispost)[0]\n", " title = post.string.strip()\n", " url = urljoin(base_url, post['href'])\n", " return title, url\n", "\n", " def login(self):\n", " self.opener.open(login_url, urlencode(dict(\n", " username='answeror',\n", " password='42',\n", " action='chk'\n", " )))\n", "\n", " def openurl(self):\n", " QDesktopServices.openUrl(QUrl(self.url))\n", "\n", " def check(self):\n", " post = self.last_post()\n", " if post != self.cached_post:\n", " title, url = post\n", " self.url = url\n", " self.showMessage('', title)\n", " self.cached_post = post\n", "\n", "\n", "app = QApplication(sys.argv)\n", "w = QWidget()\n", "tray = Tray(QIcon('smile.png'), w)\n", "tray.show()\n", "timer = QTimer()\n", "timer.timeout.connect(tray.check)\n", "timer.start(5000)\n", "app.exec_()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 7, "text": [ "0" ] } ], "prompt_number": 7 } ], "metadata": {} } ] }