爬蟲簡單介紹
提供畢s指導
更多畢設資源,請掃描下方Q群二維碼 獲取。
**比社問題咨詢,可維星: amFja3d1MDUyMQ (bs64解密)**==
圖片需bs64解密
data
:image
/png
;base64
,iVBORw0KGgoAAAANSUhEUgAAALwAAAD7CAYAAADQFP5
/AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAHsUSURBVHhe7Z0HgB5F
+cYhvdB7LwqoSBcVBUQQKYp0RAWUIoQqfxFEBRFQeg29iPReFaT3EhJC6AFp6b33XMu9
//nN
+z3fzre3d7lL447cmzy33055552ZZ2dnZmdnlxg3eaYVYcz4GTZ2wswKFIUDEyc6Jk2aZZMmz7Cp02bZlKkzbdr0mfE3mDZ9djxOn1FViJmzar4wyIZZs2ttTr3ZHKsPv6tt2PDRNmT4uIAxNmRE
+L2A8NnQETZk9BR75ImX7aS
/nG977tfLdtvrcPv5wcfbP2
/7d/AfY4OHj
/L0C
+KDYcNH2oiRo4P9VdFe2cx5huL8ftkwY2Z1RPa7xqZMqbJxE2cETLPxU2bZuEmz47Gd8AGyYeETfmTQNcHOveB6223vI2zXvX5ru
+x5pO2659G2y97H2Y9
/dpztstcx9pO9T7BeJ5wVwk
/Mxc
/QTvhKUHf6PX1GdRlTp9fYpKlVNmFyIH3gaiHh80QX0jCTJlUlmGWTp8yIgOiO6WXCQ
/Y8UrKD1PhFDdmQEn52VU0zCA
+BQ2scfhNWx
+KwwT
+02udc2Nt22fdY
+/FeR0eig533Pjbix3sF7Anpf2e7B9Lvf
/Af7LMhYwt1ifDY2U74YqQXAeACWICEnxkJn7buaQufJ35KdpAatqghG
+aJ8OEI0Tl
+PmKMfRYwaOR4
+3zkmHAe4gb3oVEPF8b4QOiDbMfQiucJv1OJ9GCXvY6PxN91n
+Pt3kdesaEjJwVU2tBO
+JaD7s4CInxA6MqkLbwT
/MtN
+MGB3J8MGm933feE
/fqw39uOP
/u17bjnr22nvX5jP9r7UNvzoOPtlvufsM8g7Jipdvq5V9jOex0WSH1UJPpuJcLvtE9AQnoIL9LTtx88fFK4eCZU2NFO
+HnDPBNe
/fYUauWzbk0l4VPSp2QHRcYtKsiGIsI3hiGjRtubAwbHfviP9zjKfrRXL8e
+xziBS9h576Nt9
/2Ptvc
+Gxn8D7EfB7Kr
+wLZaelTsstP2G3vXnbLXY
/boOGha5MQfviIUZHwkLyd8M3HAiO8BqyNET5t3ds84YeNs0HDJtme
+x1jP
/xJGHzue0KZrEXYZZ8T4sXAb7ozO
+3TK1woRznZc607SAm
/ezjf
+8BjbfCw8e2EXwBYsIQPmDLV
+/Aie1MkT1Fk3KKCbGge4ceEPvnk0N34TSCnd01E1GIkg9J9jrNDe51he
/zkVxVkrwxfCpuQnrvIsFGT2wm
/ADBXwhf5Ayf67FIf3skO6NakLXtjLbzmTeeOxiquqQptWZyM8IE8TRJ
+pA0Prfs
++/WyHfehtQ6ELHVRmgOmHl969X1768Vn7Sc
/O9J2CH30H
+1Lyx
+6NlGPXwC7BnePE9yZtdnniEDyyilKCI895Kmd8M3HAiF82sLTrVELD
/JEB3Nv0ZlOStFS96b8Gro3l
/BDh42wQYPGhYGkEzj20cPgMiV1U6Bbc8RRf7L6CX1twsh37NjjT7XtfxoGuHsd6WH2OiGQPVxEzNBw5wjHeAHscXic
+Wkn
/Pxjgbfw
+S5NY618Uy38jBl1DQAxW
+IOmhvHH1LMnfDDR4yxP55
+se2wx
/GBiMfZjntD0KNsl71CS03fPCF3IUK43ff8rdmIt6129Fs2Z8wbVhcwe1g
/G
/7eyzbwjRfso34v2LuvvWDDPnrfdv1ZL9v354faxGEfhfRHFBJ
+xszZ7YRvAeaD8LMaEn5y1qXJkz4le57wTjiOjpSMGerjcebMOQ3cp08PLXUDd
/dr6ObuaRzSx565EX7EyHGBhL
+1H
/4sDFLpW4cWeOrYT
+2Xvzw
+9LV72Y
/27hWO6o40JDt3BFrwuuEfmo183WxUf7PR
/W3OKH73DRdCP5szvK
/VBffa4Lbfzw6xycMH2pwRfWzciA8LCQ
+xg8kR
/K4kPXPPXx44V6rC78Yby7mheYSfNLtBGCe6UNmyp2SH3OoyNIaizC1KYIMKpCnCMzW4
+36/i313WvO99j0uttQ2
/m277MKLbcc9jrAdQ6u8U2j58adr4lOTR5WO
/nv6sP8Fgr9u9YH0wEY0RM3Il23QOy9Y9fA
+VjfiTRs5Ynj5AReA7AxaIXZs4YPdGdFTNKz0tgoRnbta3q
+5aBbhJ0yusjHjp4Xf02x2nVnVHLO6JlBbV1
/oLlA56XlNbf0XjDkBZtU1dU0S
/pPBI
+0n
+xwXBpih3x762M
/95z82Z2S
/QFDwciDxW
/b2C4
/ZGaedYXsccIjtdcChdtChx9qHAz8OXRlmZY6yXfc7xj5642WrH
/5aBcEbok9s
+euHvWlTRgyMMzQQXssXigiP
/ZR9bShUP365UBUqaX4v5GYRHrLProHIDckaUT
+n4jySpghUTADhw2kZcv9CEQypnVMXfrk9ecIPHTbKPv5suO0e
+up0Sw785W
+tbuT7Vj8idEsCOW3Eq2bDXw9dkudDdyV0T0IXpX7EG4Gw
/WzG8FdDVyi0
/vv
+1nbdv5d92O
+lUpwiogtcRH2sOvT3R40aEdfhYENTLXxR2Yf
/bR6qI35TRzNnzyq39i3FXAnP4HR2VW1sBSsKcoEiZKaVACkiPPh40IhA
+F622z6H2
/TRH1k93ZlITsjbEPWhO0JLXhsuhj32OrTcvZk2cmD0a0jyStQPG2Cjhn8eCM6aHV
+3kyc8dhbloxjhgm7TCMSfE
+7GNZB33lr5ZhE
+thxcYQ2IuqCQr5gvDk0S
/rOhttuePGw6xvo
++e
/Qmr8RiNmQ6EIk9bA
+Vjvmddtr79
/ajnFQe7TNHjMw
+BeTPGJ4GMiGvv3koZ
/Z8EBsyM66nfknfNtGrJtA
+Lq6unnux8
+V8OPHT28nfAkQb9efHR5wgu0duic1YTBZRHQhEn7kq1Y15sNwZzg2En7XPQ8NA923g38B0UuoD92ZaSHO8JFMRTYk
++JOeIQWnifjRaRuCnMl
/IQJM7wb00740I8eYb
/4zYnl2ZcBLz0d
++1FZAf1I14JhH
/Djvj1MbYDMziB8Ode9q
/QTRlis0Z
/Emdo4pRkjvBTR3xqI0bQX6
/sxqRIlxYgRXn5MgLCh0Mg70Lq0rQTPgMEfKnve6GVPtp2CAPX
/fY
/xuqGNdaPD2Qe1temDQnhdzvSfrRPGLDuc6R9PmJ6fIA1ZexQs6EMbF8KxPfwwsRAeNKiFW
+M9O2Ebyf8AgHSGOEh4OBho
+3HPz00kn730NLfeuOtoevCjEpKegacb9icoe
/azj
/ew3bcN
/T79zrczj7
/Ohs2alrol4
+36SM
/8XA5soNxI
/5nn8UW3smt6ch2wi9kwo
+bOGsRER40zNwXAaQpwnP8fOgE22n3g8MA9gT7yR6H2wevha7LMObVQzdmFNOT
/cJA9WU7
+ciT7Mf7HG477nmY7bTbwfbJ0PH22dCxNmbUMKsN
/f
+agu4MT1Vnjh5oo0cND6QeH6ciB40caZ
+OYh5
+XLk
/T5cHe5iiQ4ry8mVDls8vBeFBZQa
/CCCNE95JT5dk8IgZdvDhf7bfHneenXjieTZn5AeBsK
+WWuw
+Nv2zN
+2gE061o
/5wjp1w2oX2wbjZdtEHw
+ywPiNt4tD
/hYHrayFO6NLwpDWOAxyczxr9nk0c95Ed
/Ppwu
/aTGfbOyCn20WjW4I
+3z4eNiRdBeWlBO
+FbhHbC54A0TXhhjA0P3Rt
+jxv
+udmoF
+J0YiRtaOXnDP
/QPh85w64ePMV
+/MJo
+3b/GvtWv1rbvK9Z77fHhi7P21Y9
+sVA
+gFlsjv6WO3wPnbae6PsW2
/W2Xf61dn3
+s2xnV6bZL0
/rbGBI6ba4DGjbOjIdsIXEXpuaFYfnqQWLuErM
/ZFAkkJH
/vLoVV1kvtAkv40L1WPHjrcRo8cbjPG8CDpLX
/qSn9
++GtWPeK1QOwBttub0wLJa
+17/etsq9drbKu
+k23r12fZ2W8MtckjPg4t
+gCrHRX6
++FiqQnHceMG2wnvjLVv95ljm
/evty1eD
/HeqLNvhfiQ
/7t9Z9rJA8baO6NnhZZ
+TJyPRory8mVDls92wi8wIJUtvPfb2XkA4o8cNsxmvjXQJlx1t8268QGrGR7IzjKAQHQnfMBQ
+ufhOIzzD
+3Vfz5ol
//nfTvg
+ZH2
/b4zbPM3zLboX2U
/fHWmHdp
/sD306Wi7
+ePP7cBXRth3wxDg26FXBMm3DNiqX338vdUbtbYFxA93ia3DXWLnftV23
/AZNpUWvpWV4cIC4r
/bCb
/AgIjwtO6fMUAcMtKq3
/jYhl50k9X8qbfZHy41O
+UKs5OvsDlPPB66JqF1Zv3MEJb3vhmIPsDqRr1pc4b2szHnhPCnXGb2x8tt
+l
+vtuFn327X3faq7fvcGNuy
/1TbNHRbtuw7x74T7gLfDj2azfsHYgd8KxB9s
+DnZC
+18qGF3
+KN0Orz
+43qEL7WPg4NfO2cqsK8fNmA
+O8FRfhJjnbC19uMqmobFohe02egjTr9Kqs95fJA8Mus
/uSLrebkS
+LvukDiulMvsRlnXGy1j9xv9r
/XzAa
/bjXvPWtTb7zeZp12kdWddLHNOTVcHKf0DnGDjj9cZXWnXGrVJ
//L3rzwbjv6sUG2RZ
/pgcSB5AOqA5HnhN
/ewkPwlPBbhb78VoHoXBCcE
+6/NcHeOFWH
/a2rLBc0EP89n4QfUyJ8SvSFT
/jKzLQ2zKmttql
/vzmQ
+3Kr
/yMt
+sXeUheg
/uTgHy6AOadeFu4AF4cLIYQNF4OdeqUfhSRO3SnB7w
+9rerUa
+2/tzxv24RWfuu
+VYHEoZ
+fkjxFX8YAJZTcHq2CBiL8lxuI
/7b5W0vTTviGsA8HWxXE
/GNomSEppBZhA7lT8voFUXKnFedOgDtujRDeTgqtfnCbc2pvq
/3TdfbQLY
/btoHIm4cWvILkKXKE5w7wRByzthO
+uWgnfCFChj8cYnWhBa4PXZG6P5ZInSO6EImdIhK
/hMYID7iYTr7SaoLuOadcbfde
+4x9r493VxiwbhkGqI0SPvT5IfyTgfDhflSQhy8fFhzhp0xvJ3wONnZSJLyd7IPOBqReUIj9
+tBtCn372lMvsoeuedq
+3W
+GbfL2tDhwhdiVRHdsHro
+dIHeDX14q
/e14l92tBN
+IYI10bNOu9bmBELSwlsYaBYSdgGg5pSLwqA4DGTp3oRxwNNX
/Ne2f7XGtuw
/OwxUqzIkhKd1
/9aAGptq2csRX3a0E36hoc5qQn5r
/zfExpx2Reh2eNcmtvYLA8zcnHy130VODN2bQPxXL3ncftBnaujWBOIHckeEgS3dnG
+/XmO7vDHNXp1cE65Ldh5rJ3xzEQkvzI3wrL0XSHT
+0DBDrQUS8hxf5J02y2z8ZLMJ0wOmJceFgIkB42ZZ
/eRpNip0Vz4KNvyvAmZDwzGECrYG8wLZWftRlI8vGxD
/3U74BQoJea4O53EtUXSeE
/8VHecHcdBZAuf8tTrf5zLQuQwPH
/4G95pAdTfJYxbl48sGxH
+3E36BQiIaVgdALz
+vK7sTdkEdQTgJcLfa8FPuAm51BAso8v
+yA
/HfC5jwZbdJsxdiHx5UZqg1gfymZAQwrT4MZiMS93YsGixywmckyBN3XlGZodaELK8ZYtNaQurejkWDdsIvRBQRvh1fLBY
+4XEbO9UbtYTwnJPo
/KNhploL2gnf
+pASfoGslmwnfIZ2wrc
+tBN
+IaKd8K0PC47wuXXwKeHHjZu2wAmvrRYqM
+RzzPpd6ZcijRd0sZFrXbbvYOZXCfwyf47hvJ657trwO3tSqTDhb0J4d6trQn9mc1GYzOYsj
/MIbAgV4OeVac2J
/tm5o9jm2jryTX4pw5C3OsqjYbjWhKzs5pPwIro
+N18meyOD1nkmfCjc2to6e
/PNt0tuygy
/6+yRh
/9rXTr3DL
+LK6n
/G
+/YWmuuH3
+7BIV1Zkcd2cv2
+Mn
+0cXJWxl
/zpxa
++pXv2prrrlmPK
+prreZ02fajBlglk2fHgZAM6saVDh59d
/oNLvzjvuse7dlQiKNPcon
/TRfpD3HfvbTn9vJp
/wlmnvcMb
+zA39
+cKkM07jNhdne
+xxoQ4eMDL
/dLtyppJ
/97BdWW
+V5x0YeXnmZNNQzbtw422ef
/aN9xN3jp
/tbbXVNq55yzfKyAAkPFhbhkSMOP9o6LLmKnXbaP2wOjw
+TFunR
/zxhPbqtEgITHrdS5QXh0LXH6tZ5qTWsS891rMtSa1mXHqvZ7Oo669Fj5XChrGhdOq1hXTuvEUi5iv32iGNinFJ0W3H5tW3lFdfzkyCduwVd3dayTj1CnKB3yY7LxnySuOyZVTU7oMpmz
/Yva6zzlc2sU
/eV4
+/ZIBQ6iIUfLphwKZXvEEC
/O3Vdxbb41nZR
/1c23NQ691gxuZhaBsq
+Y5dV7cOPh4ZWmeJzN
/ZP79pjbd8HNPB84OdDQ1mtGj9KUaTn40FDrWPIPzbODuE791zLqkJeec5bFL41INZO
/N2GCE
+F9B3wbijsVe22W
+8N7sqQ2aOP
/td6dF0jBCY8bl74yOGHHWUduq1k
/xs80pZddQPbeItt46ZEX9t4S
+vcaQWrqam3pbqvboccdIxXegTx0VUXCL
+OrbDCeqUcmHUIF8nTL74ZKFpnr
/Z725boSMsdPMpp19sDDz1o3QPBQZdgb
+eeawasbl27rGJduq5pXQNhQPeu4RguNMTT8
/gx
/WBMh5CnzQPhkQ033DzoWDVa4eEau1s0BAVPm71ktzVsyc7rWIeQ705dVrKlll7XaoN356XWsSOPO9W6dlwlpLmaHfzLE
+JFkemQfWafDB5mnbptEO66tVYdlHbsua5Vhws7Ta
+1AfHfC4jwggjPlz
/4nE1sQUJzTCVFlAptXiAd
/d56J67LclJT6bXewpcJz8N83xm3tnaO
/eGkv9jNdz5kV91wt1161W3W
+9o7rffVN9vlV
//TLrjoOrv2qlvsit7
/suuvuSPeyecEI2npunRa2pZadm3rtsyatkQgascuPe3TTwZb154r2ZMvvBb0m730av9IQokXbn24e8x0YoYz8ty1
+2r2zgeDrTZcXNikY3VVKJuYF1Bnv
/+/U2zN1el6oW1OSHN123TrH6AyEH5T67T0KuWlAT17Lm9nnHFm
/K3KzH43hBN
+Nbvmn
/fbi6
/0tZf6DLDnwzGYEki7mq265ob27gcfx4u
+toZuWvgRpKYm3Am7L2dVs70e
/zdkWGhA1okfp
+CrLh3D3QHC4zdzRm28I7bkYlwUQPx3GyH8Q6GP
/shjz9u
///uiPfvyK7FSLrr4Crv04mvs4ouvs8OOOjFW5gWXXGcXXHyVXXTB1fbgQ4
/EjNJin3fp1bF1O
+jQ
/7OfH9zLDjj4iIDD7IBDDrUDf3WsHfDLI0OlrhXHCpHw3PIDQnfdllhyBVtulQ1s6gz
/jhOEf
+bFPvCxkPDjxk6yO8MFdtddj0ZcfdXtoVVf3W6
+6xG75
/5H7Z77nqjE
/Y
/ZE08
+Gwk2OxTs0oFALsWEh6CUScfOK9iHAz
+NIdPKbQwQngt34IefxTvIrFCILGVGX5dwUXMkTHXI5Cuv9Lcll1wq6kboLl5
/7R3BorpGCR
+i2xFHHB
+6hWugtdCGLwqI
/24jhF9m
+dAtCP1Z
+s
/f
/t5OVh1qZ7ll17Vlll4jYC1bKrQqEL5b6J
/3CH31ZUIXYt99f1XO6HmXXhf9O
/ZcxTr1XCFU0vLhuFw4XykeO4Q
+fZfgT1qQgcqM3YpA6k5dVrZu3Ve1EcPHxkqF8E81Qfinn3o
+dmW6BXt7dA
/9/NBvXrJDSKv7Ctatx3KhtV8h
+K8Qj12DHV2D209
/undo8aGbWfdA8vfe
+yDoqiskPKSrDf2QziENytO7Xw0rOQUBue91DPl44bk37KILe9vSK6wT9K9sNSEfnUM5PvnsazZo
+Gj7ZNBIW32tr9lXN9wy5hf51S
+Oss4dQnrBpSnCdw72nnb6WSHN9hZ
+vghPK03cLqH
//N1td
/a
+Nu4lPPr4M9YhDD6pvOjGysR49Jbt3MsC4buvYqOnTLPRk6eE41QbE6DjqEnTQ0u
+XKmFL5E9JLzbbvtbh46r2jprB7J1XCEM5GbGgeozL7wS7SoifAbO60IffUX7zWG
/i4NDPoBWFYxnxoljdW1NKB9HLJ
/gvu7XtrKvbvTNaEOHSPjQhw
+6yl2a8LvXkSfFcYmnQVpOsDjDUkJGOj9GwvdYKTQKq9hygexHhLsin
+HkG1zLrLxm8AsNQbiIQNcwIB8
+fEL8REws
+6CyZ7fQVQm
/GyM85506rOp2NCiLLxaZPW2E8AjfioLw39t
+Fydzgv8
+/rR17rh8diFA
+FKaVPR5l1wfK
/Jrm21tG262uW24aYavf3Nz22iT74XWKVRWmfDhGJjVMZB85VW
+biuusL7ttdev7KOPhliX0B
/v
/+670a6mCR
/IFIjQvcsa9re
/XmJnnnG
+nfW38
+3Mv10ccJH99cxL7C9
//XuwTvb6hfZyn7eseyA20imMS7bYeoegOO3D14fuxtJ2friIEcYyTJFOmTzNJk2ZXsbEqeE4ebpNCL
/JT
+Bm
/IoiDQDgy3aUV9eey9qs0E
+vDnqqwvinqr7aqkOIWG
/Bn3xSLsstvY6NGzOjIeG7r2s1VbV2zjmXxBmvOi7soC9fFl8kEP
/dhgat4X
+4ja9k3
//BrmWiCxC
+U1OED12aDt1XtOVXW89WWO2rARvYyqtvaKuutpGtueqGtsYam8cZk5TwXTotb78
+9IQ4S7PiiutGneSFbtX06upgU30F4VWwqey22x5hELqxrbX6Jrb2GpvYWmt8LWBDWzMcuyy1TmhJV4tEdHuDfuwNajr1CH11Lrhua9qW2
/wwZl6Enzh1mi3Vc
+1SX94rca8997cePVYMDcIqsVHwY
+i
+hb53t6VWtVlB18Rwd5oQLoIU4yZOC125lW18OI6fNNXGBYyfNMUmTpxqEyZO8bFMKIuacOtcYbk17Uc77hUJD8lTwtdW1Yeu28p2
+mnhAi7b1XqA
+O8FTHg
+ZJYC8nErJ6GYbii8eMctnbcIITqVuf0OPw2VzcXjFxB4
/IlnQp955QaEp1KIN2bCBHvng49Cf31lW2aVr9pb7w2yd975zN5
/7/PQKi1vu
+16gL399icxbF1dGHAFPautGkgV7iorrvAVW2nF9aPO6hCAfnB84T
+k
/9Kr
/SLhuUiWDf3gxx59yjNZ8qdLoEInTPgVftfZWWddGIi4sg0fOzEOEp3soVUMf
+cE
/47h4rzj3ofjfPeW3
/5BtGuDjTazLoHwRx17gq295jdC902tqMrIy4MyyIMZoY6dusd
+PwTvEi6EeOwaxjXhouoS7iQdOoULJAxqGbNwt2PaMkTz8pxTa
+efd0loGL5inwwdFsZT60S3qlC3kfzVZiuttF4st3J
+g9U8yUYIyxgl
+lE35LleZRMiBakN3busG7ZggfjvNkj4zbf6kS297Fo2Zux4r4wAZjkaEj6QKKTVteuKYfC4uj9g6rZqnNvuzsOnMEjtEbontJadwoCsa6jgHoHMXbssG9OLrVtIFbLz4Ikuxw3
/vCvczle2WXFJAl2aQPjQJ6YCO3dY0R5
/7IVYuAgFzK197bXWt1tuucv4TD3TkRtttEUk1PAx42MrTRqy1y8J3pMK7oEkXXqubpt
/x1v4DUIL32XplUKcuthtiHMsIY2MJElZFSASP
+hNwZiHC5gyqw4BakNAv8t4YyGbdKwOF
+3HQ0eEiyR0aULc0JMJA
/5A/nCkDEJKIS2h1vq
+/p51CnfKV15
+PfgHDcH9kIN6WefQyBBeYZddZs1QT8uXzxc08RH
/3YYIjy4IT792l933iU8tcQMQPvYfKwjPILHepk
+vsaoqs08
/HR2ItpqNHD3Rps
+qtWkzqwMJa2y5Zde2gw86LoabNSu04uH2TItImlT6yiuFFj60XvzuHC6YNdfdOJDOKw
/Cd1lqNasJLdxS3dexd9
/5X3RXASO
///0p1mPZla3nsmuG
+GtYp86rBNvDQDW2eNjqrSGYNHlq7IuDyZOmxcHjlt
/9kY0NXY21N9g8pLVSGGBPCl2RyTY2dDvGTwjdjqBElTk3kEZ6Xh2u6iVDQxH9VJglyP5Zs2bZRLo5wQbQ760P4p1nYugGjRo7Odw117QpwdYJ4XzihKk2KRyJWheugnsfeCzkeRW7654Hoj6w9Xd3to6hEeIuXUoiNFYrhYtguVKZQHYv3wUFxH8vRMKXn7SGPyQU051PwncMre89DzweW0ZaKNXPk089Hwi
/cmzRUwJBUqYwu3YPt
/DOK9gvfn5YdPPWKxRA
+Nu9
+/K2
//6/Dm6hOxFaIbVEIPyMrTuE7
//mW
/E2P3LcpBDP06kO6XVfak3r2HlV687j9pg3fP1YRulC
/NvZFwayrBSXDPAwSvYLnTotZ91CGt1C14LpTC7QDh1C
+I4rxmnO7uGCY
/lD93B3ighjGn8IN2
+IXZLQ9w
+ZCTYGh3AUZPspp5xq3ULZCvFO2TXY1mml8Dsg2IW93YK93YO9PYLf5IkNn7yqXCk3Tyr1l02p24JDVh9tiPAYHKLa7Br6uaVpvOAO
+vYbYNttt1vSwmeFyvF3J54UyEjLXepHllAddPHxsPPOuzQOSFM
/QCWd84
+LAi4O53V2wu
/+EGc6gsqom5aec
/r01ZEk4QeZDNJQV
+jHBgPp1o4eN9kuv
+KmGD4FtsZj
+EH
/l64LdvEEWE9o6Sb5k9q68DvojmkFlNJvCajIo449yWrD4IS0oukJtJrUw4ccN3okjA
/2o54gad6
/aGT2tDHCV
/xGV4Nj4l
/+nbo1hlCx9F4buOfjq09bjFSK9fDHSZSWS4aiOHn3IqRhmw8uJro1c3gOAFvD
/zyK02tbQPz3Aib8hED08ZP8KMLXlRKK6VKAsRDnEeX40hmO
+fNy
+PzvQMl4TFC2pcAvusk
/IIRF8BPB80iloT5BOtPfqZu7x05XtAHIvQhp3FTX3AHJa8KVN4e7G
/mbR0ifn6M4b
+MXC8R
/L2DC4ybQypN37ypkhbJw0TCz84civWl6c0MarwjzEqcIRXpagvAnElWkbRwN0279QPx3O
+HngiK9aXpzQxqvCPMSJ48iHS1HEbmLUGxD6wbiv9sJPxcU6U3TczBQK3KfdyxofXNHEbmLUFkWbQOI
/54PwkNwvdrXgPCTZtv48YHwoV
+7YAifZqDIX0jDzT8
++eQT
+/DDgfbuu
+9adfVsu
+2222LhXXONr2NBWMfC6kbw9ttv21tvvWODBw8O8YvsK4aENBF
/KNMwXPYObt7dw6fuPg3obtJJOHQw44N42ExfRmwi
+m8mGfwY0ogTDln5tBUg
/rud8E0AYtTbpZdcZWPHTIpz7FNC3qZOmWl33nFvJBCYNm1GJBIk4siDq5v
+eVuIn9nVGIHB558PtksvvTziqiuvtz59
+sUB5CWXXGa9e19pd999b9BdG91uu
/U
+6335tXb5ZdeEtDz
+2LHj7YorrrLLLrss3FUnBje3yfVdZ
++/91FMH324XXJxbzvv3Ivjsoc
+ffralVdcG9yuiFOf1dW1cfr2wvMuj
+SeNWOm9Q32XNn7KrvgvAutOlR8w3Jq
/WgnfDNAS3jXnffZ3844x
+6/91H772PP2Afvf2rXXH2TffLxoNJDJrPJk6faxRdfGskJ6S679KpAzHuin3DhhRfHiyF1E2hdhdtvfSBWDncQtcwffPBhJCLxhw8bG8k7e9Yc6
/Na
/xj
/qquuCcfwI8i
///1ovPA8vVDuQcdVV94QdRGf44zptfb4f5
+zWaHib7vtDrch5OXKK66LYW695U57
/tl
+cbUoL2df2fuaqJtJqIsvvDqm1dYQzY
+/55fwE
/2DCEUYO3Z6JDxPNUlo
/tAwEwsfdfbuOx
/Y9dfdZK
++EggQSDFq1Bi79pobQ4s
/MT5yf
/ut963
/G2
/HXRHeGhB
+9xtYxhv92GHB9WSgLNI0krwFMv7rpjti5Zx
//oXxiP
/IEWPt4YceDb0MX4szffrMeEHU1oQWeGaNDXjzg3AXutLOP7d3vLugJ4tfb
/fc
/WBovb07g98lF10TLiB
/SMT5lClT7OUX
+9v0af5lbuT55162upo5VlUz26669l82ZMhoe6XPAHv
/w09jbyezv20A8d
/zsdXe4kB4bu
/Tp0E0i1t00C
+mm8B5dVwiHGwLpPn72ef709BAEu
/quHtGdLo8oTtQ
+HArlFEg5K23hLtCjOPkpJV
+8MGH7YXnX7FHHn4suIcrLsj48RNjN2fmjNmhta62iy
+6MqYXW
+D4u96GDh1uV155dbjT3GVDh4zxCyHonTmjzp55
+sWohzRqAvEnTpxszz37sr30Yt
/YzeG5MWnSwkPu8y
+6wj4bNCIQ
/k37T7jLtRO
+gOygrRMecvMq3M033WcfvPepjR45xR564LHQh77aHnzg3
/bkk0
/GguRR
/y233Ga3335n6CLcabfeertdfdW10U9kv
+jCy7yFLZ3nAeFvvOGWGAdhKw
/0Ql7uKnSbuKNgk1rq6669KR5vv
+2+sh66HMSZOmV2iF8bL1KWLNMlIuyFF
/SOXR4kBLfRo
+kizQlhq
+yiC0I
/Ht1WHQjfJ7bwLNDr2
//dqJPr7fwLLl3MCd9YHx6Udh5ruy08xJkZyP1YaCHD4DB0YyDHDdffHEjTmE0
+QL39trsr3BHipm4ZQp
/96htCv5zW3
/vyVVXVcSDKjA
/dE295zc4993zr13dAHEdMmeKrEu
+4/f7g9rY99tgT9nqf
/pG0dLMefOA
/9tqr
/cM45P6YDneDxx59JsYByFVXXmt9X
+9vDzzwSDi
+GdzDBRkJ
/2ogvOflgkuvsRdeet3uu
/8Re
/DhR6KutgbEf7cTfi6wOHBlt64xo8cHAtTaDTf8s9RaN8Sll14aZ0KYqizybwhv8SG5KgXh4vAjfln48nnw9gvIuzlxo7AQlWiKyxZ4DEyxFSfvkqVl6ukBBrhI6ORE0GUjHs064Vg3Pyv84WUVxWlLiHmLv9sJ3yRUUBL9bqy1lh9S5L
/w4OQv9msJlK
/G7C
/Od2tHVh
/zSfg8UsKzeAzCL
/hpyUUHhNYvJTiShmlH60dWZ
+2Eb8digHbCt2OxQjvh27FYYZEQXqsla
+p8um3
+0DAT7WhHc9FO
+HYsVmgnfDsWKywQwtNHBxAb8C5rSvh0qz0Smj80zEQ7mg
+mVYtQFPbLjXbCt2OxQjvh27FYoQ0Q3vtf845w5w7HLNMtEYVP46srkLrLjaey6ZPZNGxTkoZtCvkwnMcXPUrn0oUbb0nhL7ciSBQ
+RZqPFHLLh09BXCQfd0FIXmfL0MoJP3jw0LgY67LLes8T9O5pmunrrrvOLrnkkmbh8ssvb1DpAwcOLPvL7YorrrCLL764tHjs0hgPd4RwvXv3jm6NYcSIEWVdgDTRg17hpptuamALcQn34IMPluNJJ29fcXzmGVZIZnFSvPTSS1G34uSB3ddcc01FushDDz1UzmtjuPbaayvSAqQ1t7JoCp9
//nkDnS1DKyf8c8
+9YEsu2dGWWKLDPKFjx45BT2Wm11prreC3RLOBpPH
/9a9/BZuWjJBb586dy
+Fx79ChQ9kv1dUYXn311QbppP7o5FuxeZH
/DjvsEM
+Jp
/Rx5
/jrX
/86+hXJGWecUdbRFFK7kB
/+8IeF4VKsuqpvI56Kyq0ofHPw4osvVtjScswn4fNTkSkWJOE7dOhk3bv3tB49lmoWOnbsGgrISU
+hgxkzZkSsv
/76tswyy1jPnj0rChMst9xyttRSS0U
/0KNHj3LrNnPmzIgbbrihXHGzZ8
+O6N69ewzbrVu3iBVWWCG
+sEF6
+TSKIMKz7l3pQFbSwFZ0rrPOOlHf1KlTY1i6DtgKdtxxx2gjkuptjPCTJ0
+2adOmRcITH9uVhxSUwbLLLlvOpwgswqNf5UR80LVr12g3hJdNEpGdhiifVlNQWSxWhOe8ubLNNt8PBZsRnsx26tQpFjbdB
/qYQ4cOjecpIFrDQnJQSYSh4PNQPIQjxE3DpmkUQYTH1nycsWP9rSS2
/uBOgh0iHvkAshFJ9RYRnnDS
/9e//jW6oU
+68kBIM01XhOdCJK
+4A3SvuOKKUf9qq
/GRuMpKU7rbb7992ebmgHwQr1UQvrHX
/BYE4Z9
//sVQSN6lkVtTQqaQ7bf
/QSyglPB
+7gRCRo4cGStAlcCRVrNIiK8LpghZgXr6HCGIWibC6FgECA
+5uCvkbRo1alTUOXr06LINIqJEaZPXVG8R4RH0oPvMM88suTQU5YUyQQ9QWYrw6MnbsuGGG8awRYSXXT
/4wQ9KLlk6eUnd0Ue8L5Tw8enq
+NlO
+kDwhd2HR0J5h8xT6d565yHZbjsRfokGhB8zZkw8x10iPxFB5ykUXn34ojB
/+9vfyrpp
+ZQu5L
/55pvLfvl4AuEIU4TU3rxwwRTpyxOe89T2pgh
/yCGHxDCEl2AHAmGlowjEaS7h8
/FSSFoN4cdMaLuEBxL5NYWWED7Vj
/uCIHxT0lLCC80lfN6OuREezAvhU5CupJ3wOaILkjzhwR133GF33nmnTZ8
+PYZhP5Zf
/vKXduCBB0Z34a677irEL37xC
/v5z39u3
/72t8u6Bfzvvvtue
++994LdfK5ydtRNnHvvvTfiT3
/6Uzk9KjONT1
+aMA888ED0F4ivQSqDzIMOOii65fGjH
/0o6oQY6MEWcM8999hFF10U7Qa333579Nes0mabbRbd0aGuidJlkEyYlPC4kwf66fhxgVJmpKN8MmAnTlOzSm2S8OMmzrKxE0O3BpQIP6FEeo6trYVHdEQYvC6xxJKx0hD8CEvFF0GVIEg
/wD
/VwVF
+CG6HHXZYRZwUr7
/+egxXVVVVkQYVPXz48OhHXz6fbgrFSfNB
/5uLMfVLbRN0Z2GvHX5zQSitfDzpUlwEP8nKK68c7Wb6Ny
+K0yYJP37S7IoWHcJrTh60JsIXyfjx42355Ve0VVZZJdg70SZMmBDdRVjcmL7jNyJ9RdBgVwWLDtwhDjoAXQtaP1pHVaDw6KOPhvKaFG1KCcXxnXfeiX5DhgypiJOCdNDLtCpExwbyQzwe9kgnecKNqcO8DoRxB
+FS
+zhXvlZaaaWYB4HzvOg5x9prr10uS4l0thO
+EeQJz9YRC4rwOJMGogJFKJh
+/fpFNyCRviI0RvgUPClFivxEyMbcG
/MXNA8PJGkc
/VY
+i0DcuRG
+OdJO
+DZGeML37du3XPES6StCcwjPoBVZlISXf3N0ELcpwjdX2gm
/gAkvPyQNm7pvv
/0O5YIrIjyZnzBhUuivMnjrECra
++Daho5ugSor7c
+Cgw8
+OIbBT0K
/V
/5UDuEZHHMh8FvAj
+6E4ipOEYjvldQQ
+KMLG4GmQIFEaTLQTeM2JujUYJZ4soPfiiu3N954I56TtsgojBs3riItHRGFSQmv8U9e0nhK40tPeD14ApKicCmQohZemUZwGzNmXPCnIDuULyQ
/ZuE45iufvrh0SnAHVAxHDQJBGlfHxvxSQGKEcAgzP
/qtONghXYIEf8D0Yl4ULo3TpUuXGB7bU3vIE6QESvfll1
+O8XBLL3bAtC
+SpiFRmJTwzRHZtNgQHlIyHciSgeaAwagKV
+TcYYcd7Xvf2zZO84nw0k0Q0sP
/O9
/5jh1zzDHhPDgEkZ7XXnvN
+vTpE1chfv
/7pLNNOYxaoEMPPdReeeWVOC
++3XbbRV38ZhZmzz33jGEIixBXulmRSDcqnU8X4X
/2s5
/Zd7
/73bhALG
+TCE
+LS5htt902
+iMQBKSE
/973vhdtVxfs
+uuvj3GwFR3YgF7inXzyyTEvuKEbkH
/OuctxvvXWW0ebuQD0FFiEZ9qX9CgnLgzlF91cXLg3F7rzfKGEZ
/49j/QCWNBdGodXdEsAKShw6aErg1AxFL7CUCA611oPhHNIqgvn1ltvjW5AIsKnD3I4R5
/0/OY3vynrQnCXHioy7yabVl999aiHBzkS
/HFTGJb5yk3Cb5A
+eMqHOeuss
+I57oiXk5
+TT
+VZuiRcJIQhL6RPOM6BCM80KufEk50KM6
/40hP
+1Vf7hIpeI1T6miWs3iKkAyd3W9Pef3
+gjRw5yj766GNbc821o36lp8qmFaTCqDxupynhecgC
+VgNKBHhf
//738e1OixMI20e3rBmB12HH354DEPrhl6geI0RHtCKYvvGG28cwyD4YyvPEtDPtCaDRaZYWXNDethHvKOOOqqcFxGXc8Kdcsop5Twj6rYAEZ67wRprrBGhMuBupTIgfaAyZwoWoRyIg5sIR5lgI
/HmBcyeSde8oZUTnh1wS2XcbFFc
/+0ZRagsfq688qrh9tslEGSd8iBVcVTZIob6jinhIUVe1I8lnOIgPMiRToUB3P4J2xzCyz0V
/EVUoO5OGp
+HWNjKk1C5kZ7ypnxJD1JE
+HzaiNw4ShdCeA2g0dVYXOktQlN
+848FTPgUC4Lwgiq
+SNzfwaBzbrLuuuuHPmHX0Pr4k0Di68iF4CTIyClSNmVDOruh8AiVrr5tCpFE540RPhVVGjoVl7SACE8cxUc4TwmfR2oDkhKeLxaiE1Ha6NNvSb58uMi5KyhsS4U42EH8PJT2vGMhEp6B64IgfMhnPKoPLrJ4ZdGidi6HZY4e0uImNCbjxk2I4QXC8uUNCuall16JlUirrMKmEhqThgWbQa0561jQo7luEQsUEV5kTu8GAJs4puUgP015yl5
+p4SHiGkaRUj1AqUHZCOQ4K542KovCarcWirYK52CLgBE6c8b2kALjzBPDuFTgjr5eTEhI7zc8OcIcNd0o4sfGbymYYmr
+fgXXvBBIBWIqMBSKToXVNn8Vlfmn
//8ZyQ77vkKbYrw
/E4JiFt6DhQGe
/M20FJLl2Zn0ji461nD3IBIP0J
+ZK
/CMA
+vtCFqCsWTSFeK1F7pRdCHFMVpPhYR4VUAcwMGpXjzzbfCIIfB0eqxReabRMK
+++4fCiNPeAq
/g9133wMxDB8AI
/5KK60S
/fMybNiwOLhCB7pE
+KqqmjggHDt2XBzUrrnmOsG
+SgUUIAMwoH7rhRdeGAdXDOgAfiI8r6rhxvoT0oQYIkkR4WkpGWgSh3OODDTT9Tb8Rs
/DDz8cw0BcpQ0YMDLFSl4YqFLGCHEJf9JJJ0UdrLuRToGXrTXYFfxDbvW23377xXyyUAx3wims0uAcG1RGhJUf05jYltoq8Moh6UN46dWdCeE472jlhH
/mmedC5r0VDt7BLTP8kEN
+E
/2KWni6JJxDYNxAnrAS9BFHLTzxJPzu2rV7TD8vxFNLpJb77LPPLlcWSLsDIjL
+yofIVUR4fqMTsnDOjAdukI5X61I9xJduxZdupiUVTqJw5557bskle7gjaClEXtDD
/DphmHGSW6ofYaZK6QjYjjCfn9qYh
/yKRGnNG1o54Z999vlSYWVrWiQHHXRIKBSWstJv9fBbbLGVffvb343rsrk7vPvu
+4Fs3v0pEhXE1lt
/x7baamvr169
//IT8xx9
/WrLJxwXEHzDg7aDzTXvrrbci
+vfvH93lxwfIIDwPmzbZZJNyxQlMG2611Va25ZZbRt2IKpYZEfTxgErhCUM3YNddd41Tk7vssktMH3zrW98Ked0i
/iYea995MFcEvbcqIb
+yrVevXjH
+gAEDoj7sE3jAhjv
+eYHwxGfMgGArn
+enXBDSYFmz8iKQHyR9wJa3V2txAOnLBsBL7KqzeUObIDyVk17twSNIRvgu5fCS7bbbPsTx1l6kbI4w4CXs97
+/XdDnhdSxoxPeQeudjSPQn6Zx3nkXhHy4rpTw
/L7llluSfLqxuKd3Ap2DNBxHuiUKI9v4DXbeeecYLi
+Kn4riyTYhLzw1ZkxA2LzwlJU4GiQD2UZ3DdvpLubTUD9ehOcOwTnhJbxRhi78lT
/h
+eefL6c3b2jlhH
/88SdDRjtGIkpkPISHdHQ5FN79fS0NhUbrLzI2RxR2p512jmnQxRG56Tql0MUB5HbWWX8PlcrDmoa7D9CKZwXvwD1fuZwDCeEoG1pM
+ctd
+lmbIp15IW4qaTwAqbngvPwz23jzCUJq4J4KT6KlQ
/qVD
/rxCA
+jpFtQWLpgxAeIBrUIXSl0pTbSheP4wgsvVNjYcrRywqeAdCJYYyBTeVEL3BwhXNZqUyEdQ0V4QaVA0vGB5Mwzz47xVFFppRVBFcGT3ZQASGNxiwjfFHjCm0oajy6YZm7y8QDhigifSj6OCN9cUTwJhCddIOHCI0w74XMgU3nxyp0XwntF
+G240hakccJnlS9iNQZVBIRXqyZpLO6iJjwtc1OSj7OgCK98Iosh4f3FD7oNEC0EtZ
///BehECoJj396TreD7gWttLtR0d5yr7JKthZGQneE9Bg7LLmkh
+c8leuv185jWTrS6
+gQbsHdg41eyP4x4Tl21FHHBD8nrLtnXQhmL5jpQUQA
+bPzF
+fs8CXRxaGwRWBpAfFvvPHGkr0OpY
+cc845kdBpPO0wpv42m0zRygO5MZCWPl0w6nY0h
/BPP
/10tEOvGqKHXcs46jy90GQvR9kwb2jlhA9O8YhAZkiv84MP
/nUonJR0DQGx0YHwm
/gc0aWlBYgKRKInrSAvt912R1lPlo7Il6WdVgx5O
/zw38YwhJWfRL8JJ3IpLnPTxGMeW6IWLw90C16e9XHswLn60czVS9hWhHi4K4yeKUj4Lf1y5w0ruSG4E59zngvIrTHRbJTiAC4AgA06StAlffo9b2jlhB8
+fKTdc899cYWiCPvAAw
/ZQw89EgZq7H6VEQwccMCBtv
/+P4844IADIiTEB
/vss5
/tt98BkYCu
+76YtoSCefnlV2NYdOaFZwO
//OVBYVDHlhsODY433niTeP6LX
/wqkNoLGXvvu
+++MNDz3bqo5P
/85z92
//33l8EWHAhk46EOYEdgHijxYjbxRHguFuVNZBHQzWCTrTfYloRtP4488siy
//777x
/j4Y5NdGl
+9atfxTiKnz7kkSg
+9QA23XTTcnjJvvvuG
+3mSSm6sb1I0M0OzNjI21iQG13aSgT7dGR6OcWXfloScqmwIVTaqsotRVMiwo8Y4U8cmUUgTjoDJIHw6h7lxW0LfxKRXfk5b0S2NY4l4np2JNWrfEMqwJNNhDDYjyiMwnGUpHEVRl0nnbN
+X2kqPISXfonCK0yKvPCAjHDsS5Mvp7zgjw7Cp5LalILpTOdJEZmbg1ZO
+KeffraUWSdmJeEpqJQ49E29sGgFJZwjIjx7zpOW3njyB1cexlu3yjet8uJplE5KorBnnXV2ycWF
/rvSTaHumc551I7IDkSEUneDR
/GIV5yHS8kg4qgs5SZ3kCc8Fyi6yLfC51t4ylJ68tA8eioiPA
+QsCMvqf0c0UN4XWgC6cpOgelM
/KSj5WjlhH
/qqWdiRtO
+OwRJSZ5CYbLNPrsEva4rTzZe
/kiFAvGC9XDSiWCbVwxu8sv6mAqPbqXjpPDFa0Xi6emupQdP
/htAdOzhTkT66ZNLxRckKZlFShEK4C9yp2H47elnYVO3tI4E0tURqGtCeH7TwuOfF8Iy26K0dEGn6QJ0SLeQpjdvmA
/C60WPIrKzs
/CCIrxIIPFzJ6OTQ0cnF
+BBDOHyF4paVY4sSEM8jgfKFzphpVN3GOIC0pUoffzdHo8LmFVClEZaAQqjuEXgTkRUumLoTWdL8vpcZ0Z0SJNCkuXPw6Tn
+p36F9WVgJAu4QivC1WET21TeK39URopUnelofzm9bUcrZzwTBMifh7
+BIEEGeG9q8MAUQ
+IEKbWvJCoXK
+IGTOCPcEgny7kRQW9pMALHNn0mAoc0GKjP12vc8stt4VwlYQXqf
/2t7Oiu6fphOU3eviQAsJKTHQChePd3dpatsbLgB8XFk
+Sic
+LK3RJsFl2qiKfeuqpeA7ZssptCC4WiClS0odHJ60
+QNAt6GIgfBHQJ6G8EQbZxFUYdAjYgKSEp66wIQ
/cFUbxkDQ
/LUcrJ3wKFahaVwHCSMhUKpx7OPq2lfrSoB4GEmV6QUpaxbn11tvL
/hKle
+aZxYTnqJ3HkNQfaHVnCsUVeCURoZxEBC8zZpVeLrs1JSmZAS9xS4dEetJwcitCXljdmcZJf0tSwpN2HtiE5OMhReGbj4VIeL3xFIozZqAIRQYVgbAszDr33PNDAToRfvazvey00
/5qf
/rTX0pF4YWE3H77nTHs
+edfGHftPfXUU4OeoCjI5ZdfEXVdffW18Rw59dQ
/Rz1
//vNp8cg6HdKgFf7LX063P
/7xj
+X4zCGfdNLJMRz6U9DC
//GPf7JTTjm1AfC78MKL7eyz
/xHje5p
/inpI4
+KLL412Kc8p4fnNXebvfz
/HLrroktBy
+iuFKsMiwl9wwQVB33n2yCOPxDCAl8zZfkMtt2Zp0MNDKOKIoHvssYedfvrpMY50U45
//vOf48BU4RB0KD6zSbjzwIyXxFNIPv3005j3Y489NsZhh2PeJeCo30DpYuff
//73uCBNeZk3tCHCqwsg3Hwzi7GYWcmILmEPGsJ065Z9o4kjsvba60Y
/WkzckdIhHsHLL79SJhxCGgqD0H2iG6P
+vACppSPNF92oI444Muqki4IpWTjGHD8M8X0aVG4p4QHnKgO
/yzVNeAgJsdmXJrPD
+8MiK0RSuRA2bY15xC
/9cpMelkLITUJcpYk7OzYgigNSkZv0NAXZxvRtqq
/laOWEF7FAly7
+wTBIDG66yV9QIExVlff7PE6dffe734tTZpCLuNXVNWVAdEiTEh5C
+g4Jfs72IBAMEJ9
+t5Pe7dQSBJGRFrdjxy6R8L6UwYkFFIc1LeQBu8h7Kj
/84U5RB
/kiLSCSE4d8cFR6jozwzE
+jF1JIeKJKH5v9cLCDPjplpC25iS
/Co4PH
/MQRWKaLEFfEIywzPRCeMGl6
+HMu8ITYy8rLgbSJi5sEm2RLCq
/nhmjqE5zNw
/wQflIgfEAR4cc3IHwxigxKQd
/Wb9
/Z
+6YSteyEEwH83PVI8ncGQYRHj5M7m9Z87TUefVeGnz27KvrdddfdJZ1UlPshxP3rX
//mupbIxhlw29PxQaGOjYniAVryUaN8bcrw4ayHT8cvGeEBpCoS1uGLSPlWXF0a0JigN09KunXE0YXL79QfpITnwsNN9kq4APK6efJLGREvb5fS5DhvmA
/Cs9VeHinpU8KT0LxAO48BzvOCG2WOPyRAvHXVVFZGIIURnPDpqkcqBELWxXTTsACdCOOD1B29Evrnshc
/CCq7OVLojQkNADNHed1MRxJt7FjeZU3zUDngy4uIwexQh0B0kCeXWnjQGMlwT
+MAttuTKJ28bhGe
+NwNcENS
/RBedim
+NqtFb5EQf94xH4RPyV2EBUF4KkAV0piofw0gBCQT6fi2K0SCrJVk6RD78sQhPucUOHcTWm
/61NIJSJ5BY2UL6
+/JOnSheV4RCji1m
/U3isdFRjiRgzsZ4nc9T48jYOMo4mAv
/ojryboQ6b6TEk0JHnHEEdEPiFRC2ofXlGVe0jwongiPTuKQVl53cwhP
/SK4oYMwEJ5zuaVgr0v5zRvmp0szcZblsaAJPzey58ULOyOkChnJE14tfEp4heEVP4RCkqQrFBVWF6TbCrLwiGxHD4vViENf3MP6QI
/0WLujC8d1
+cWCfhaNEYYnw7jRKnp
/3QkCeLLsdmSViztk5FM7yoe6FgKEV6suwqYiXfqNPsLkCe
/l0XzCS6fyyLmWCovw5DPVB5599tkG
+WwZFmILz8B1fgnPC9UQ5cgjj0rQqwJHH31sLDzkuuuur8Dll
/cOBe4FCmkA
/ezrrrvB7rjjrphG2qVhWvCGG
/5p99
//YNSH
/9FHH2PHHXdC9M9DNpAG8t
//PmG
//W1mIy9JS37zm8MiSYEqDRtZXz9mzNh4XlNTG2dzfvtbz
/NRR
/Wy3r2viN2Sf
/3rFjv22OOD29F27bXXR
/TowdfE
+YDY2nb88b8rpwvYkRikAz12C77uuuviABD7eeGc1ZTYyXlRC48ofp7w5IM00Ilu7NT6
/SLCn3jiiXGvS9JMgduVV14Z1
+4/8cQTUTdx0ZeC5RWyZd6wEFv4BUF4bvXektGKOFkEEZgW0wuoGGp11R0ZOXJ0dMMPSQmPhDqMQAiTpdWQ8Ljj72Hr7YwzzizbR3p0qSSHHspmqm4zYYtEszMpGLRCLI7opduF
/XSfZJvSTOORBq1kdhfySkdEXLXM6XkqCq
+4ynfah5efwrKkAD0QnrRTwjcGpZvqkr685MO0DK2c8Gyb0aPHUnG
/d1WqsNRSy9jSSy9ryy23gk2fPjNi2rQZ4ZghPV9xxZVjeDb2EeFZbjB16rRQ6F7hiN8RLMSZbjNnzirNyLh
/QzjZpk2bHtM455zzQuvZI9qmCww
/9qSnZV5mmeXiplDoZW03REyFqTvCAKYi0f3OO
+/FvdYHDeKjZj4FyozRlCnY7XZgI
+VAWTHbBPh4GXnIryFHRHDeolp66aUjIB1ueYG06AHLL798sG0Ze
/LJJ2OeUhAOYa08ywvWXXfduJMw06DqnwPSAaSdgncCUqCzSNK8tBzzQ
/jSPHxjUB
+epQUkND
+AGCKXwC3eC8BbYaCKBBRyOsjMCy
+XEMf9PQ5CWvSpFa8YGdlT0MIzJuCCct0eDvjmpFxQzD17S92USGeWZtqSu70Cg1Ykm2IVlizPeqSicuIFEAQySFeRyI9wiN54EnmL4vlnQSvtFLT
/PmWtix73dIxB
/RVJRt55QRshPMZC3hQs4sIv65IACp9KgBy8cZ
/NwdM
/9pbdM04XAdL5ReGFjKSE90VlHl
+/0alKlp
+TsENc6kBXgzrMiOlh2EyVdOeF8DoC4sle6WdbEqS5hFeLy
+N6hDKRPvLPuY5ur
+dXbgyScRPwywvvtkqnoLB8SBk9EtLQg7M0bJEQb97RygnPCyCqOOaocXOCesXj58sHvII4x483pRD6xAoP3J8C7RCn
+2pqvDVWISPe5w0JlUTpzJrFS9EWn
/AqvPR6
+t6HJz2tpiQMFwDiZGkZ4dH1ySefxXh0YaSbc4dXIvD
+ciXhST
//jSfs0FFE8LLLyCakd0xAGoRvivDrr79
+jJfOagmMKcg
/sy3E48LzO3FlOkKRyOZ5w0IivL73BG9CscaE5gW8eeRE9audwhLJBFpeiYftaC
+++HIkIDpU8Xmwqk
+F4ARh
/bUXTCrSiTN
+119/Y9lNkJx
++hnRz9Nw
+/LCBeDErbxlN5Yuuxzjp
+29uVDcloaoIHzpaW9THzWTQGQRF
/A7hdy5MMBOO
+3UwE8C4TlnoJrXoQ
+zabVkGr8IRUL8eUcrJzyVzVQfO5DtuefetvPOu4SCaJzwVDRu3
/rWt2333X9qu
+76E3viiafCIOvp8lHgaSoCAR9
//In42Zhdd93ddtvtJ3F1owR96C01jPER
/2OPPV7eFQ1I
/vKXv5TcqMhiwqPH8
+TTbwhdIdLeZZfdykA
/YdiOBD9eDv
/3vx
+NL4UjReXFBUs
+Mzxhb7
/9dgwvoeJ
/8pOfhPIhr7tFsG
+liEk5PPbYY8HG
/4b0H4
/nIiBxAINXhc
+TU4QnDPGBwpIOadOHJwx9dl5oJz2BHY1p9QnPdiCyEfBV8oYkbglaOeEl
/KZ1E4lS5Ft4ICLyG8nrFVI
/RHFYzCWRPhEeUeEpHUlGeNej9FNJ05P84Ac7hDiV
+VJ6bCeCPuba8
/HmVVKiCupWkDcJrbnfVbNwIm8K3CUifLqtiMIUAUlJySpN3R3yYb
/QjZiKiC4sKMLTB2efd
/Y6SckAmIbjI2Xs3y6RH
/1z9mGHJHQF2Oe9EuNt
/PgJIQ23bdKkyWEQOzqGZz03W3mIcOij8Kl8hJWZ48aNjzqUnoR17Y0R3vORpYuw8Sj2cPfilUPIrXg8jBo9eoxtsslmsfu13npfKcdD
+I0
+15l9dYP8cg7wmzBhYimGC
+EgIzpT4MbcOToIw170vE
/L4JMyAWp5CQvSnX61Vz26OOcoe7UXvNJialPxEMIJbPFB3a24YvbpUeFLT3i
+xOH9XVqSjESAN49UORL5EQ
+Bo2mcFN5ium2co5
+BMaL0EfnRXUB4QotN6ofjL2mM8KTz618fGs99aYH3hb0iO9grr7xWCpfZKx1cKEWCTqWl3Y7piysuwEZeZsmLBp
+CRL
/x
/81vDg06sCWbLenQAZ0d7bXX
+sSw
+cf
/Xk8OLogi3eRb
+8MDBL8UklQ3WCwI7wSgMCsJr3n4VFTREIiCzc
/SCITxz1W6bdKdvucaDlEUnnPCs1pS6QjEgSS8vSS3LJ4r4sME5IMHSgi6lC
+WI0tko
+LTYsvO9IgorXR7b8VTvlnSgG2Cx3dgmgb3eWFnN
+n3cFm3EntdR7bcQOAcwnNH8LJ0uwSEJ7UKj
+TDCOkFBBYTwuvbRZV
+Bx
/Ma3j080BGkozgFKi3ThR8Ggb4fLbHRdDJ706dOtuOOzJPnKXFSsh0Tl9EkKQXFe7o5omtlhRT2L
/+tX
+YGH
/STdOnxZRITyWUx
+zoetxfhEdks8Km4QRN8fLCivxla16kD
+icsBwpV4hIvnRha18aEd
/rwaEwTRGeF09w9zp3N84XI8JnBZOKf9m6siIrkcVjJibvT0WrsiXy4xVBCggpHeLgWP6ChN8iPUf0MtiToMu7NNhUqQM01sI3F9tuy5NLjw
+n
+N1YWgB
/AOHlNi9CHtXCi8z01VX2eUiaIjwP6HBHr4TzxYLwU6dOt
/fff98GDvzQNt98y4DNYyFjvAgPEd9
//4O4svK9995P8F78FA1CeD5
/QzgGtPSjRXaO7AnJl64JAwYO
/KgUj7Uhm8dpTlpkxRE222yLCEiuO0AR4RF2PCMvfAk8wwfxyF6UfK6HT
+9U5iFD
+hl
+z2
/mx
+pOyocBrsrOCdUhfvzt3Xffi
+Fkt8KI8Oj95jc3LZWD47HH
/hvtpjVXPvOgbDz
+kvEzOayj4f1ayp5VmiK1wKeANttss7h3JJ
/I4ZM9CBcLn9zBj2lJph
/RIaISd7EgvKS21ltorvpKwntBSCg4gTClRqcsuDFYVSUDXyrA78pH2aRP
/9bTdRILis8RcDF4FyULmyd8mp
+88MIJ8YnbmDB49TSzR
/yCP8hh
++keMR3gZdMx3lm4w
+mBF
+EUJiW8jkK6Vgm
/1F+/0efwuiFNdhbAvnQtDWULCMOR
+fV8HhRWL6ykIh1fesIDhPUy66
//VfvKVzaI5xh
/6ql
/im5sUDRkyLBCDB3qyNyG2ne
+s018oz6dAlxnnfWi7s8
/HxQqbHisNMErwsMBVlzy9pFeBgf8Zv6ZVY5OeG1KyreZRtqgQYPjqsnGZIcdfCdkLj7CQxY
/OnjY9fbb75bTIy
+DBw8pYajddZfvrgzI47Bh2fuv3D2GDBkS3SkrpjcZzFO2l1xyWXTTTg4iM2Cxm0RkpIzWW2
+9uBJSR
+IDdflYjUr9kAfKQXFTbLPNNqGsPy9j0KBB9tWvUpfrxi1RfHDtlc8RPQuK8DNnVTUgc3OwSAhPC
+0tduYmgUy0WrhlhVnZSglOQq9MFo2R
+aFDR5S7KdKrynakleRuhGWaL0vX3SV8AaSS8D6gBf
/8p
+8CUCQQXrZWAl2Cu6W25O0rQhpHgl2eB894mhehiPAqJ4TfIlEan
/l7RN
+kymxsHISToNPrPLs9L0aE97ll
+pEivcT9
/aiCU7eiKWhem
+XBCs
+sBQTgdyTWEhnB8uD7sHnC85sCpYuQJ7x3VTrEL3ETrkh
++EPfR6ecTrLrgQPiCJm7wrt7nkhpfIcEW9Mj
+ckPyosIz1qdbOaJeF43QGMYiE7e899pFWlTyA9I1Lozxy9RGLpuTtx5RSsnvJbpsiIyL4cddkQoNM03e4FoTrkhsoc06CMOfXkqembo0
+GeXix6iRuRDsVlMVZ2oXl4J3mmm8qsJLy38vjLjhRylz7QmMyeXV0OCwFTkF4G7yP7NF
+lTtnLzmRpS8pP2VREePmxbw
+Slkt1tc
/x01XUE1nA64RKwy8QB26UkcJJ
+JADabG8QFJJ2vlBKyc8qx4pTCqI81T4jqhI5EiX4nqaiI4Kq8qm3014wuImYhLG57UrbVE6fLVCboSXPvnT0rE0lhZKYeTPEchNUNwUxHX7PC1
+K39qTWWHIFHl8izgzjvvDmEhrO8CjLvS
+Mc
//hHDSujby6bbbrs9unn4hoTHHdtUZhoXUK4QWHGAhLefILlacZASnvO77rqrlFb2PdoFh1ZOeF
+3Mi6uCVllldXi63GSWbNmxXUorBlRwZYaEttrr33iegzmhCVUCpXF6kHWsEyYwBNMT4duDmtj2JqaJ5usPU
/tQBg4sg6GV910obBOBWhXMJ60oovbOmtBeK1Q6QoQxNe5sOZlQjzy9XARR0BIg
+nKlVZa1ZgGpBVHFCa1UXZKWJtDmR1zzHFxnQtpsf4IkNdJk6ZEAiLEJSz2MsYhT7yMztNo1iupfGU
/7+pSF8suu3w8B0z3rrDCSqV8ZGQHEt53pVz4nI0EYtPlY70NftxBWb8zceLEWIcp
+Bp3MZGbi1ZOeIGWihbY95kpsboktBgqWHl973vbhnMnGhlFdD506PB4Lj3yT6XAKeqWPXmgm4rmI2EIOkXKSvBApXJ
/d4QHR7ogBIQLS7NBdMG01gd
/3JoSpcWuDxLZgSTJR8GdMiafpKuPsKXI20icvJvgaVUSnm4KSL8cnr8bsATDyZlNVSrMvA5aEf
/dRgiP8PSTPSPp5vBksk
+fvnHNzJtvvhUKwytSpGTrDsIDEVuV8
/DD
/463ZG3MibCYKUNf4yFWKrS0pEm8IvDlbvr9vA0lmznHXWMDplC322676M7YJAU7GuDOhSrCIOhhF9
/tt98hbuRUykr0R2dTAkFIm
/X9SocLi30hsZl80tJL0El40iQdxkginICN2AL4vc022aaqjg7xjkSXkNcO5S4h
/6TPthwSkZktQ
/Aves
+WD1zg98Ybb0T3lkL6
+NkmCJ8aTaH6bVOtZgYRPg8Ef5EJ0GIi
+Gc6vNKoUAlp0uJlYRqCrkaanoAoPW3
+WvkOrkM7jyFyQ6QjL
+hTmMaEvChcqtPviF4W7LJAmQHKNCV8UQuPpGWcbnEi0CWiPDim8RoTCA
/y4nXt8Z2sPmOn3y2B9PGzVRNeot8cKWAqhwpT6ylowZYjmxGgYggrAhCfhy3qi6dLDQAtlCpWYeRXhDzhEV4axw780c1L54jIlcanxSUd4hIWkBe6MOjGfoH4sjUV3JnBQahciJLmCaALnSo
/9qsnHWwlfEZ4vivLPjq
+e4Di
+4vwXiaEI3
/EkT7Avj8ivFpviciXSlOE1xNc7GELE3dvLpzsStN
/t3LC80VsFTYFjRu
/KWA
+EIxQgQqTr
+A88KcPz0XAwFLLChAqT0R0PVRWBq0Nz
+sEKeERKoiLKCUD4Zpjn8C68yz9ynCyU
/Lqq6
+X40mKCC
/ohXReLUQXgNiVhKeF9
/Bc8IDyIgwXqPKqfAsIF6YID7SkAJvyaIrwEhGfL3iLB3NHGyQ8t3oKHPJwrpaWCmJdOqJbdApVtEiQQuvLBw8eHMN07MinF9GdtZw65tGYOxWMYJ
/b7vP
+TiS
/s
/CbY
/53ilRnpV9GHPwUX0L
/HDfKSeJkKraXvCJ6MowbuiG0l8WcuOUf7tgvUQPBBllNCXcAWvqU5H6nyAiu3xxJuylhoEsYHjwtFoSn0DlS2BRmKnnCU4HapqNIWDdDq7nqqmwFx8Oayu4KafzoRztH9yLwxFSVKDeEY7bclkp1ssmvV69joptISQWkaQJadenMlwW7qEm37igS8qFzVTCkpaxS6I6hMjzrrL
/H8qJ8uesxDcwT186du5T3
/XF1Hl4XdlOywQYblS8MkVs2Ifx
+/nnu3E741A
/hnVa
/sLO7AEJ
+CEvw
+cHUabNsxsyagGqbPqP55F
+khBchAO6pFBGe7T0aE180tkSc10UoyDQ
+YN
+VfDoSfdQMW1KBMPnVh0CiT95AKInCKG
/YnuZfQHhGoPAp8TKCx0NZ8jqASJYnvOxkDMBv3FgtqdZUkv5uTNLVqBC3iNTMkGFLUcsO4XU3ECTzS3jyM37CVJs4aXoE5C8idxEWKeGpAB6EMFXG7r433niTffbZZ7EQ8oSntTrxxN
/HnWjZcTYvvHeKnt
///g9xQRdQBYl0G220UXQveo2Ql1J4bY5lt3l56KGHjZ17sRWC0w9mdgbkpxy50NCDLXpAxRIKvl1FpZN
/5L77Hoj5Bfr0DWUA0IFAYC8zvwMBtfrsSanwIpB0Q3gWplFmvKuLnTyo6tXr6DigVRncdNO
/op
/isbWG0hGcjPV28sl
/jPnaf
/+fN4vwfN0QsAQCsJswcYB2F0akH1UthS5cjhAd0k
+YOM2mtdYWXh8dpmKpcEhz6623xoIoInx6TrxUpJu
+PHq4
/RJOZPSPDDsxKPTGRF2ZpgR7scf1ZjZJqADAnLW3tArHZ
+J5yDQndsGUJwiS6fMLJyUBojTkBpFdb5YvhU27NBy5
+3D3QKfPw2c2SyeiB3spGAgjIhdPk
+dG
+KageA3h
+lsClTOA6GDylOa37mARE97fuYRkEJTKufvuu2PhVRI
+JdaS4eLoGuNQUPR7JZxPnDg5hqeSVeEihpPfdZAuotYUkX1NCdNoEB5bqDw
/op
+KlA5Xwj44lbZ7t4VuUrpuPw
/ZwFFEE4G9z6tP9GTpA5UFn86khScO5ORIuuj6xS9
+kZSLx5UUEV62IOSLdfoir4T8IDwxzZPby8hbff0mPPC8eAIcWgoJv0X26dNrA5FBMcHzWOR9eBVsmnkkJXxT4i15VsgO101rmqisEFW40uTOMrf0CCqSQy5sTncBAJCpKcEfG5ntyIvsls0cBQlxlZYuZCQNI8E
+J31G
+FSUnqSI8HlwZ0JvKpVlnwGSq3z1TqtID1JJ89oSYAqYNHlGGKyGAWtbIXxemkt4FV4R9FCjSCCBkysYFKQ5hEeoRHTzYGdeCO95bozwuuX7eVpmEg
+TpQeQtLGQ4NYY4fFTepK5EZ60WkJ4BqkLk
/ASfkN2iN4qCa
/lwUBuVIq6IRwZyGkqj9
+05PilwM37plYaIPJJljXiklaA0P0gvipMfXuEVpr4Et2a88Kn3EUcbCM
+201QeXpQhh70E0ZEJK088MfOPOEhhgapSktI46u80n10EGxncJzGkz9llSe88oou2aW8EcfvYG4PR1ZN4u4fYYtRo17iMQuE7TxAEplBY4QvEuWrJVA8hOnIIkLPDYu8hZcbBaeCpyBFSiRtFbzfKvgFQwWwrBV
/lr2qkGmJaIlJh7CKz7nINTdBF6slZS9wMnn
/lNkXEQA
/t93tI5yH9XhAdojwsjW1OQ3vyPLvg16LF5rrypdT5RNQt1MELgUsCWkCpSN92Iw5KViWzJdIIDznlB
/hlD5uTRGeF09kj9KVH8LPliKN1yYITwEo0xdccFFc9MQHyMC5554f3UMMO
//8CyMIo9
+AcCeddHLcFZjP0aAPwqtiWcf
+xz
/+qZyWQOUSBhIQ5s9
//nMOp0VQqQhfxSMOZOYFaew899xzw
/GcuGVIKQsJcTwdpjCZBrzookvCuZNJtojwPHjC
/j
/96U8xPewi7yn
+/vdzYhzA1t3alVj6JCI5G06pjHTB8fSVslDeyLfEbc7sIw7
+DH4F8kz5X3rp5TEOeVY8Pg6Hbj4
+LDtBSvi33norlAU2nR
/dwMknnxx0nxpf9ibfBG0JEP1uQ4SXe8OrXkJhQAYnRAZab2
+xs9Y3fTmEW7RaoawifAqQdNDrLbK754EQ7swzefAEmdxN3SgBkS63w0nD0gBJptf1iPA8eCJOunwgL6Th8ZzQaV5kE
+n7
+RLxQRnniMJUwuNKsjJqHKxV4u6DLWoIRHiVvZ9n9qWEV92mIAwXKU9oPUzLIOF3m1haQIblRmsLVJipUHmQLA
/CowdiA7pEvrekVwokyhMeN
+0DKZK6X2UFA4SKoXUkHLoQuhXEzYP0eZmFvjS3f
/KJLQjp4s67oNgqwvNFbtLi9cHGBB3o1gUl
+3ADCPl19wVPeOz2xXle5
+jmmCe8hy8mPJMQ
+lKIQJjFkvAQl4qj0HjEr0KS
+MyIF6zHy5AG5TcvPxBOlZhWJuvh1bogVJz7N014v6PQumXx3Ba1ukuWLyLpB7xMkZJS8TlqHp5ZD7nlhcVcIjneQLbxRFhuXnaa8wYepqi8HJWERyCzPzeoDCuzaEiwhcGrxhH4kwZCfH9pJyN8CtmXgjxTrj4n73lpCST8blOER1TA6XbZgipdIBxE5Tfxgbe6bBQ0qiIsgBDE4c2qVChkWl6lnUcqat0Qjj7zk1UoNspfwvp7pZ92xdDFxkmkwZiD87xgG29j5fNJa8v5r351cAwD0INbepErHlB
+5KewEmxCeHPKw6HHdSlPbKYESdk9WPUi3ZLXX389nFcSXdBAWtO6IJspolw8fy1D
+BOEuG2uS6M1IqzXcL8MqhAJ57RkFLim4lhSAHGc8FkrQjjXXalDokL3XQAq05WwTidz90Fvdk4aXqGqSPkpnAgopBcwv72FzshJdw1zyaeOIkTq5sessZBoaUGqU2C1JHlWvhG3Q9uRo9MfqpGGbOUo27GXYz7dpgjPVwe9JfediQHduO7du4cL29MlPy1D
+BOEuK2a8AzmKCgyrYqTaK2HKguodU2RhuG3fyTM
+8RyE5AsLroagm3t0kpUPMQXY3laqnT8RWBVYIbMdkDYvFsR0nRFACQ9FkFxyQfCmCPVl6Jo4Rx5gJSvv94vnkNKBHWev2J7BQm7B3Ph5yHCyz7KKL0YXnnFxzotR
/gTpNUTnq0lWIH44IMPJhUb
/zQgPL
/5ANh
++x0Qd8wF3M7l9
+CDD0dd3BnYxgM
/PhCGm6fxUIizX
/Dbu0kwNfjII
/+2hx9
+pKybT
+SAb3zjm
/Gcde2scgScA1Ygko8ibLLJpuVwMT8FO5
/xNfL773
+gNK
/u
/W
+e3rIq8W9
/OzOWCaK8F8Hz
+0hoGJyoH3
/8cdTJ7sO6e8iOf
/3L38F18TJ3wncoE54viu
+3337BhgPs3nvvD7g3pPFAKJuHc3gklrGEbVLS
/BOHdU
/MWq299jrBVspzn
+iX6mFbljxHGkfWSKVd31ZNeAGD074xUtTCM
/ORdwO4cftHWK
+NW
/okUJK2Jo0hXRYs3YLOaa00kyQ
/lis3JgwCFZdjHhBNL50zBtHdQbp5qx
+hfPJxU6TlJ2EWRHYSRjobb
+EzwlOmxOFOxh24OeL12DBs
/g5BOgSbd3g6oM0Qnm3w2HWXlY0YmwqEV2GzIVC6KRAPl7TpkCBJCU9fEbUTJ06KGxOhg5ZUD6codM4Bg0
/i0aoSnuWv7CQMVElMMZLWsssuGwmv6VB0sR598uSpOUyOYEdj4mO728tnIbPKx12ERyA8bmx8BLTPC2UkewF
+agQANpNPQPozZ86MU4CQUN0vygAbILzbR1gH
+tghWZ
/8nDVrtq244kq28sq
+QZZIpbpiMyU2vBLhSB
/MmDEj
+qfCN6H41CVTsbJFwjMIOKDdzZqHzJY2Q3gKVpWF0amkLbyEguK8b1
/2L8n0pP3
/yhaegshaRQ
+rwbIPOqWDWRqFA6Ql0YwIX
+KG5NoINCU8
/pA01ZH24
/GjsiXKi
/xSwutilG0IlZkX3HzrOi
/DPM4444wKwpMWjQzCprFKX1ASXp6OIsH9s88GxTjo5S6CG
+eku
+2225ZCZiJ9d999bymcFo3NieVCGfB9XeqHZOeOzMY2Q3g
+PU8BUWics00EguEiPJDoARKv
+BFG4VNZb731g74ucUcv
/NFLHIBwm2awTKHjpoLit9zo76bk5Bw7mKWREAdi4J7teJAHxM26J9whIB93HqWldCG8V3bW
/cB2R
/jTiKRrafKA8P5wx5cHo1NdDu5kclN4pQWByBvxJDLBuza05tlnPaurvWVWvr
/73W1iWDUMEsLccsstsR5pRCTUF2XF5lHzS3heVCki9NywSPvwnmlvgRAMTwmfIq2grl0zUubF33hy0iEUCiQmvn
/jKTqXbMgIz7oX
+aWC21
//6ovHQEskm9fOUJSGxC
+UDDvskG0clZeWEl7p4gb5kaK4AGJSbghxAbNfeSmKC9L0UpGb5vgdS8TnDYsR4VUhbnhjhE9RTHivoOYQvr5cuM0hfH0g
/BnltIvCNCbc4j0e9sw9fkp2ML
+E566WJzzHEpcL4wInvIchLmgp4RU
/FcoSqQy
/mBGewoGQvHywzTbbxtWIPIjo04eHGF4o9N379u1n
/fo5WHlHJouEgRsFyEMQwtCN4IEK
/fd77rkvpsMTV0Xndgr
+979Pym554RM5pM86fpYL8AQ1D95fVQWgH2jATR6VDt0Apg
+ZdiRM5efwKwnPIJO7BDaLEAhpsLZFe2ZWEigjPOG1TyY6UmDv66
/3LQM9fEANW7nrsr8k0OCYOHzSRu7Yzmc5iaenzrhT9tiF3SBfpthOfWCTh309DpIJlyEjdVNoM4SX8JvChBR6SKGXuHlbicIHWdym00QaursHt3EKWTo14PW
+rYcTGhO8vF8vUtJPh2T
+fVaEShDxlBa
/JaQLNMhmO2sE3ZlewcuGcPinpmX2ZtOKAl0w
+tHKI0gH54TnPC966VwgrLqcQHkmDfKNYIPS58KXm4fpGO8yknzZKg9OXLfTobw1DREeadWEZ8aA
/db5SBeDTCpfuPrqa0PrNSx
+uoYZF8CLw
/4hMx0bQv3SovTkDuFFCnSOHj3GZs
/22QsKjw938dGuvEydOjWGpVUVEbCVdTCqbBGeClBeGKwqPQl2hKQiOVhAxqczWfBGHtQVSwkPSE95
+eyzz0sfMxOGlW2grNDJk2FWY3766ec2p8Q3FqlhE0QnPHdVfVzNL8I58WET9aFyz2OttdaKL4LIJuoQu1kXxD7we
+65d6jT4dEu0mKhGWVGPdPVlLAnP0CUr0o0JHcRRHjQqgnvr
/hp
+WjMd8nPZxHwo1IUPq38xsCcrvQUCe4p4R3Ze5UsWoO0uGNHKtkbT04sKhuBuNqrkbykggpInU8nL
/4ZyEqbMrhbSni
/KLIxQYYsfaZRcUvLUKj88LOnk89vY0K4kSNHluMJEt1BlS7lo4uRsRkERZT
+7Nm
+BQgi
+xyVxG4MKeFnzGjZ9hzCIiU8XRjOsww3RnhVUOOYN8JnLW9K
+Lz4G0dZnLkRXnY3h
/BOINepsBmy9KTTCZ
/ZkkLSNOHTxXmeRnOF
+uHOURm
/JYT3cIqvXZGRzMZKUjeFNkd4oD6iBMJTqbgJPImjsDxzHk5
+FBru3EK5gLglFwnxRHhu60zPoZNbO248kOHxPn1OwgIqiz675uOB
+qRK3wdskNIrNiVZS1p44pFP7PI4bA24U7xVY6fSw0Z0
+0ZMHk6iMCIZkBs6vAxLgZsQujiKnw
+vFY
+pEC598qvuHXlR
/Guuua5si8LJTv8gguq3
+UgJTze5iNBzwyInvCoIwc9bIG
/hVUC4S1TY8lfZs06bwuNjuoRJgaAjbeEl7D7AOQvUENkIRHSlpXiMF5Zc0u8GecgmkM3De7dBSCX70G
+2DJoLlzjMjBCcGReVhR7q3HrrHWU3hPR0LjvSYy7ZJsXzl
+lGKMdUR5oXD5s9aEvHM37MdlnI1tqHMl3ClxyzSa70tQRuk
/9uU4SngDbc8Gtxh1rWdOBOy8mgC0j4ThDhvvrVDe2TTz61jz
/+pNwPXGUVdi3wwtbXvQWEdEV40kTHhhtuGPey5EvdrNhTOIHH6J988lnc01KVifAkl7QZQObx6aefBd0bxLywgpHzjz
/+NJ5ju4TP5my44UZx0PrRRx
+HQfSQkk
/WDWA76a985Sv2ta99LaYPNN3IGhTsAxts4OkxtYq9xx57fIwvoI
/8Amyam6QXj2THHXcs5wF87WvfiO6QjTriy9u
+G1ol4b
/xjW
/EeEcddXS0rajMGNCm5G0u2izhgSpH57RyqZA55sAVLi8ifJE
+dV9Swgu4z03oE0snQgE3JcqXXuImDdmDEJ9X5ghDV0zlIltEeJWRw
+NDeCQ1QX6Knz4ZTkF6jFXmJughLJCsvbZPo0pX0bSm3nNICa
+Wnz58Y
+L5ryRzc9BmCM
+DJFob1kirYGkFNtro69az59LxnLXnElouPkjGwxrC8IEt6WJ68fPPB9tSSy0dC5s
+OWFSvPvu
+/bBBx
+WWyCvOK8IkaRIaMVp
/U844cQYD5s
++GBgbJElI0eOii2XP7gKBgXJEx5n2fLRRx8F
/C
/OeZNn1tqTDjq8pfTFWaSXkT0bqIrwqchPeeEl7o033iTqx52umVpltfDYpHRpZTn6
+afh3G0AEtUVRKfuvv71jaM7eohDnjSugPCloohlRjzeZ
+BuN2jQYPcIovSnT58Zz0Xe5qLNEF7wNeBeILTCiJYW0MpJ8MeNT
+XQv8weFmX9bA0eGbTiT39YYdGFDh0dcyc8
/lSe4onIpKMCx175S4oIjx3kkTsXfjxnYADMrAe2o0NQGhnhndBA5ZSK
/JQX0tNRuvydX8YDDMrr4wAZP9Ijj
/wugoR5eM6Z59dg1Ms5KyfZIcIr
/TwkhKU8KCcRtyVoM4RPCalZEK2JZg92CgU3iQqSR9LE0fuvCBUmfwDhlY4EXejEX0cfGFZOi2JTSqhUN
/GIowuAQkayacnsNi6S0oWSEBzoQoPohGWNCmFFPOkHPpitJHwp2QpRfOxXOgL68Heye95IF7IonSy9rIwEDaTpenGedsEEt00Xp084UEdcXHm9nEsISx79kzcZeZuLNkN4
+vBUBAWg1oJWju4I66Y5p6CVIVVoWmhUIJKFdXAuISw684UOvMA8PkLfVuHyonltKihLzw0oIrxD05KVhBXhtRiLcLqA83juuecK4ns
+mM3Ki18gWdg0PKIya0zYxkRxgMoj
/Z02KClSoVEiLGXCb
/x5eTzVldXJEpEPX2rCa9cCMuyfTMzWXlx
//Y2xYhSW3
/JTQUHiVF8qZF7iBZpVPi00rX1GzniIwmafuhPkha32VEEIdyOEtLgjoVs6JfS1IXzeBoGv4c1Nsg8M
+AWf6jrooENKoTwfultih0B4h
+9ITOOCXf5GWK7ggvikQOUFlkfawufFZ5D8DixbJbxphZvqMMXLL79SqvNKQs8NbaqFpzAoAH91zl99w42WntfYcBPYf3HKlGnx9TXAICfVhzAgY0NVpiHlLp0C74gSnx0OlIa21IbwIklemPsm3owZPrjiVs1uxbzyxyAb3VxMEuWJZcxFBKKSed0wzWMRWM48dSqvQk6K8dL8HHLIIeV8MpXLupVJkyaHcppaBqsQSYt4K6zgryiil
/DkPy
+kN6
+E91Wpr0T9
/iqlh0
+FVwtT
+wS9sJOSuTloc4QHVEZakf6bW3OGrMUPf4KUDmV9iPqY
/uDJ3VO9QC9FIxABN816NEX4VLBBt2x1T9CjpQX4q
+XiImism5G3rQjM5JCW3wG9v
+t
+S1QQXnanKxMRWvQsHYjsZMaNhiUv80N4ypHvZOXzlUpxt8X9ODb0axpthvDvvz
/QdtvtJ
/bjH
+9qu
+yyW6Ngh1zgBVJvb7wxwJ544qlCsMyWwqblZTZHc8IOr2x9ep4uidKHTEgR4V9
++eWo
+6mnnomvJQKeCj7
++JMxHKTebLMtbPfdd4
/2StIKbwroEEH0G53YBti1l0oFHo6XQnaMdrMjscpTFxi2ub1uM
+8OE54yVHdH6aSEp7wAU42eTkNbXc
+u8Yk0afAeqsoEEJ
/dhdM42CTdGQjr4HOaEn8pp5LQc0ObIbzQUtlqq63LlStQiQLnqlD99sL31pE
+apFgS1EfHlJ4fL
/TSLcqk9
/pthcUPKIKL0JmU0N3
+aXiZeV3FPLh5w4JfmnepQc3zX7JHTeQPjjiXGUoW2SXQJcSgrE7QeoundzhFC89FkFxKxaPtRO
+obC2RIWVR1qgEBc3KsL9K1v4VHwAZ
/ETi9IjYXAsnejiiFuaJp
+A9ELP8oW7wuQhPXlIL
/7YxMAv1GcE
+glDHooknwZhlQ5dDXSk
/loTL3HdPvBWfH6rAcCNNe3YxarU
/N3C9VZ2mTjKBvfPbNPvipdD2gnfPKks0CViH1MLrNJKoPC333776C7BBuILmR5Vfhafc3SoC4RQ0GzglMabGxrLN6TM20A3AiEd92t81WUq2moP0I8X4TnnabMEwiDoRxjjkAZ5lZDn1CYft2R5ccJ5WQoQWennJc1nBeHLupqPdsKHyoLwesCSuXtlN0X4NGxWySK8k8AJX4ochIIuJrxfJEVoLN8pEYSFTfi8kB7h0rX9ekCXIctbYzI3wiv
+YkN45uF1W1XBNBdUANNqZBLxhzb1pTU4S0bC8xhdFU0wj0da
+u6Sk1qg8NPFTSJ5Cs2QyA5J
+taORHEY3JXMjOkQj3PsXW
+99UKYJeMUJucpEYTGCM8535ZSPiQ
+K
+QXjewEadeM1w45T
/eHcZs0T095Zv162cKrhPS50z68hKlIdO688y7xHB3Kr4QHe5yn9sIB9PjyYM9XS9BmCO87j0GKyoppLtLClk7eL6WCeBJIy4Gb
/ClkVVJj4EGOuitFaaLDSZBVmtJIBTcRngtbIj34U0HYSxjeBUWKCM8LIIRFvCvhBMJNC
+GAKl1jl9Tmot
+EYemxpJREPAKmQhVeabD2hzR4Q0vuEoiLG9
+WQvKEJx4Ly
+SmdFz3EnE6U
+FagjZHeAqKlYi
/+93/NQtMPaoCJJdffkXc2uMPfzglrls
/5ZRTInmYnbjsst7xI1zHH
/87+7//O6lJnH76X2NY9BE
+D
+x0nGC
///0fYmEjTzzxRIzTu
/eV8Zz8ifCEx
/2qq66JNmeVXR9ftOaDbHxgDCkiPKsdr7jiCrvuuuvKZaDxSb9
+b4Tz30WQz969e0dCEY8XT7CxKZx44onRboBNyMMP
/zvouiykeVW0LQX5uPjiiyPyhFcZXnvttfE8JTx5xz4
+zqaylHg
+fWkBIvI2F22yhW
+JpJ9kkahgmUXQQyQEAokA
/C6yI8XNN99cvoW3RPRSNBcvgi4RXrZin4C
/wgkINuKvOBlcTxo2L8qn4v
/jH
+c2GlaCv9LQOWMc2Z4X1u
/n89WYpISXTYx11EhIXM9i1MJnhe261BUpAlL0AggFSuGyZQSPqHnsrwVLPne
+ZCyMVPDLXwQ33vjPqAcUCWH8EXj4UTonnUMP9ZeiiVfyiuk63FZVPCBMERh3oMN1eZ78AnQ9hEmFsYukw5L
+MWcBwiNalFYkuMs
+P68PhPdZGtKUm
/Lrr1A64UViBO
+GyJ42e346xcVu8pPgR
/0sdoRHPPNOinSwBIiDZO
+IZpUkgcD0wVmUlerQQFXxVGFIahNzzCrAvGjWg1Ycf7pLrrtj
/FQOQrQszcqWmnMBW
/Q7DZOG9UpUOVX6MzAlnV
/+8qCYLkJYz7
+DN55Ih3CcFwlpSKfOfbVkZUMkOzOb3T
/NR4rKsCzdyMZTkjT8Yk14J4y7p
/B49Q0IXyR0bWih0CWiq
/Adrh
+dtNAS9EtUiIJe8UMfQjzpZDAmUZgsLYdXrCMlin7nw3i6
/shf
/hnc
/nS1ZF7ST96gB32I8uO
/sy5UyakB4RF
+E47y5Cik
+SiC4tG9SYX082Hhg
/xagpTwrXqbjpYSnlaKTBURnjjp7dwrhm6AP4anmwRo
/T19Cir8KIkuDKYl8SctVQRhEbobErnhjx3NJbxEugXeIHK7SgGCYD9
+iotO2c0uC
/LLQ5ISnjLhrgA5ELYjwZ18K13vAha38NzNaKWZPkUnK1IlxG1K8NeFoWlfdHIRCKRNGvJrCdoY4SsriULJCF9JeraLI1NFXZrKOJVxScvD
+bFISBfou6dImkaREI44hEkf5MitCJK0ZcSd1Z3kI5V8Xgjrkt1ZiiBhBsj7
/q6DC0gC4TVfT7IZGhI
+FZ5v4M50at7epkT1c9hhlS
+s5FXM79KCVr3VXmOE99Yxq2ihMcIjinP
++RfGl0eYWnS3jPBHH31s3CbiyCN7Wa9ex8TfgN833nhTBF
+DVvh8GnkhnIj3ox
/9OOpiu23Fy4OwpA0aIzytNy
+THHfcCcHdy4AtLpiSZL9NybXXXh
/zyarFfDqHHnp4zBM7
+3IOsfkGFeuESAPxL4D4uAZ7SLPU
+MdVoJQFn
/HJy5133hnTZppR5XfUUUfF9HT3KBIRnq1GjjnmuJi
/IlnsCM
/vlrbwiAivV
+ZY3CTCI8Tjti6SpcjCxEMMi
+TTyAvBUh36rXSbQmOE5
/aeuXsZaCtt73J4unCLI8RM9Sp96QU8iFKeJNrKEH
/CA
/FVQXNRokAuwMavWlSmrldTktVplndsytu1mBDe53upbJbi8ri7CL6isWnCs4c7wiwNHyQjDH133mjypav
+FWjSAcy4cCHQf6SPztF
/10Q
/zasjtL7el8368uhAn6fvNhFH
+huiawThnCwO5rd5ZA
/p2K6O
/EonrwhSNtpxIC3Dm266uUJ
/t26en1Q3ZGNqkh2Sq6qqIhjssrwAuE3dy33puYsTXvFVPwh1hHiZezlhJ
+WeLxemd
/WWk8ZTi1ULr0ETaEoaJ
/ySccs6BBVUIEfC6fYNAdiwP02Dn5BCBFE43AVsY5ZGfhRyKmlXhsqem3iL5
+EFufngOluWnIaR2altElU8xErjAOxO85hfv48ewpBmv379Sz6ZVJZXVud
+ngHh4whud
+WOxB4vO5dt6UW22BAeY5sjhNtu24YPnkSWMWP8pWjUqUX2sL5tBKDFlA0CFS2dgApzHVFd1MWsh
+tw4jm8oA888JcxXro2BSGMRGFxyxM5hS5UkVPu
/HY9tKC80JHpA
+7na2ka0487eaB
/nhKF
+PLTI
/5UpN
/vsv5bQhkB3DnyRQ90yV6ENNQlkygMbnJfLAivjOcrpzmQQAAqg
+k9vZhA5Skcv71w6uNiLqUJ8JOwjQTnqT
+2UpHp1nXSjz
/nWX82W5VIeqlQMQqT2laJJSq6TAjlRPjULlWyFmMBJUdZ4M
/OY6luj5cRRQ
+DFL
/crSgp4kA88iOh60XeeeJKGkiWvnNBLXZeD2DsIOITHWThgns74ZuGhMwieqdV
/lSE9NPaU8Dccqk0wQd1MXqcXlQFEoejuigp4ekiQU4g
/fITiiQfpgi08Kmk25kIkIa8
+EfN3A5E
+eCY31uSePJH
+A2kUyLykG
/5KR5f
/qBMIL6TNbu7IpzrwkmFMOjJnnNkeZRujl9qwvMtf
/YvZJ
/BeQF7FJYLqoRBg4YYu
/SyP2N
+d1pv3Xzt
+qBBpOvABlUSX5FG9
+DBGUQudrdlz8fmAJ1FkoZJbUiBjalgr8fxPScBQgXLXqAyECZNmhTd2ZEYsPcm7iKqjuzrCFQ
+KUiLstQ5
+SIskwOcowO9nn4xF5BBIQzhWOukLlshvsyEb0fzgRS5txQieatFO
+HbsVihnfDtWKzQTvh2tB5UEq21oJ3w7VhIqCRaa0E74duxkFBJtNaCdsK3YyGhkmitBe2Eb8dCQiXRWgvaCd
+OhYRKorUWLOaETwujyL95CGUYUeS3
+CIt29aDxY7wUUoEjWu6a1nANCe
+MKKFSs0Bj9bLj9f5zQsnjZEed9IsLTvQxcHmRSz
+2m
+//aIbGxbV1rhd77zzjr37zsCIWdNr7My
/nRtwnp115rmll1vmBretpro2VOysoN8
/ExSqILqnOnDni3t6aSbLBzrq7fjj
/s
+OPeb39rsT
/hD01dvsWa5zyOARMRw2nX3WuXb6aWfF8Dvt
+OOYr1Ejx5V0uZ7WgMWG8AhvNn0
+ZLgNHT7GhgwdZm8PeN
/eGvCBvfP2
+9a92zKF8fLgczKs8RgyeKQNDToGvPluwAc2oP
/71rUzez4Sbk78Gja7gG3w1a8HfNM23GAT
+/rXtojEBn89
/ey44Ko2kKxT16XtyWdets5dlo
+LvyAgfp07LRXIFcosXJSffTrUqqvm2G8PPyEhUaVtFQhhuHggcXVVfenCrrPvb7OTfWfrH8R858P
/9ohjfC1Q6cLEnfNatmQPv8nf1CmzbJWV17aVVlzdJk2cGv2
/ufFWMY3ddt0rvtwxcsRYe
/a5F
+KF0U54FfAXADboHz5mko0LpK0JrShkY2
+i4BUJjxTFS8FeJuPGTrZxYybH8JHAQQ
/k6tZ12VI4L1gJ5whuCr
/RhpvanXfcFy6eKdZtqVUsNJyB
+CtFewjDG0ArrbhmDMsdaYvNt446unZZKqYle5rCrbfcabfdcr
/dfutDtlSPlW3mDN9wigtK7
+MKdbX10X7S5Q4T7Qzh
+FLHGadfYOecc55177qyDfp8SLjYh9nTT71ggwcNi
/o23WRr
+8r637Bdf7x3fDvplD
+eZs
+99GosX7
+jVJLui8Ri16WZOjO0nvwOLd7ADz639z8YZAMHDrLuPZzwH7z
/cQmf28AE773zSWwl420fQoYWjd8fDvwkhn
/v3Q8TwoMsrxAng5PphedftXXW3tCWWW4167nsmrbu
+ptb156r2frrbWi1QTF3kvXX
+7otuUSPmF7okURS9ui
+fDxHsrQKEMJwfOYp
/9Dx0j3WjPbHqzvIc8
++FO0gDKTFvSa05JddekX59UCE1
+o2
+ea37PDDeoVGYXkbMXys3Xbrvfb3s8
+Pb0IRf5ONvxuPu
/54L
+vSuYf97ncn23
+fetrtprxQH5ER74vCYkV4Wqmll17dbrvr3tgXDT34QP5wyw7o3mOpWPHVVbUNEQhAXxgdF15wqS2
/3Cr2wP3
/8QolY
+E
/ZFp2mZVCGM9jKpwLItl
++/4ikKHepkyvss7dV7LqQIxOgVAI5dS1S8
/Qd
/5DbDkhDRfUe
+96n75Tx25lPU2j3r6y3ibRxu5dVm2U8ID08O
/ZYzkvm5g3LoJ669l91VAO4Y7I
+CKguspCN3Bg1EvcTb
+5TdyJYbdd9ot3oF
/+6jB7rAHhnWRfNBYbwqtyYiWU3edYTSiA2uDQo
+eyIYz2qcwKKI
/Yv43wyowVCnEC6BZFEqUopc3FBDhHtv7WNvbxh5
/ZrEAkCL
//gYcFwq9ov
/n1EeVy
+v2Jp0XCH3zQEfaLA39jB
/78EHv5pX7hzvCV6K
+uB7
+LwNtMyy
+7VkhtjvXstrp3hUJ45Pnn
+LCvh3vm6RfCAHN8OS
/f
+fa2sWVHxo
+bbNt97yf26SeDQ5dmBdt8s63tq1
/Z2L620Sa20UZfj2E23
/T78bjNd3ayddf5mi0b7ljPvfSypxVt8fzwsnu
+PBc1FqsWPhIuVAIVf9dd99jdd99jd955r9115wOBrEsXxskj3gVmO9HvvON
+u
+/eR
+yeux
+2e+/+t3XrwkcXzLba8juxX1uEXkcdFy
+ACeOn2Bl
/PceOP
/5kW6LT0vFOs2TnpSMJZeeaq29kS
/dcPaTFnWeOVc2ui8cLzr88pnPAAQfaYYf2CmXrHyFLEV
/dCza
+NWBg7Ap1CWmQ7ycff9meeuIVe
/aZV
+J4hE
/zR5sge4hH2h
+8/z
+7ovd1scX
/8MOPbNddfmoTJ0wLg
+iekdiQ
+IP3Pw3hIZDZCsuvYuefd6ntvtte8XzDMD556unn7YEHHo67HyDLLL1i7A6hUxe
+iLcosZgRfk7odjB4czLgRgXxe9NNt2gQvggQbt21vx77u2Vy4hd
+b
/yNLaMu3LhbQMSGR
+LNsc8
+HRKOIVyI2zkMVvsFYvYP3ZX
+b4WuQnCrCl2p6667wQYMGBDjMOOx4gqr2Wqrrh39SLM2DEbe7P9
+1JfaSHiE7kVNGGssvdQK9sTjz7vNwT6ITwtPpUN4CIwQj
/icDxs8OlzYwb6Ql5
/+ZK84xbhc6MpFCf4f
/+/zUt4z7PCDnW2Dr4YuWPB
/8YXX4kxTnPINeunC7b3Xz8u2pfEWJRYrwleiZEupkluOfF50rm5R6pY
/OrkgHxUQiR
/h7hRWahduHCEqcZhexG3IEC4aBph
+AaRALxdE5uaVTbwiZPFAGpajQ
/6Vr92RhlDSQT1HnWn6wT3YXhl
+0cPz4b8XM8K3AohoOs4FELHynGNjZZqNGXQej81MK6LQPvSwiwEXmf9uOTLSLWq0E74dLUQlgdoa2gnfjhaikkBtDe2Eb0cLUUmgtoZ2wrejGagkTVtGOkPUqj95044vEpWkactY5IRnZgGQNtD5vEA6WoIiPe2YWzmlU5MNSdSWsEgIP2HCDF
+ZWB8KDdIH8Jv0Sza0yxco1IHIHd8RqJjOTInftkG
+AMJDsYXawk
+aPN1beaG9e9OOLwAQn4s6DlgXJuEBLf2UqVU2fUa1VVXPsepwlbWjlaC0Dp6lALR
+IK4SDUfcvwwgL
+wKzddTIPxCmaVpCuMnzWjHF4mJHKcFTLcJE6fFhmjW7FCpoeWbMbM6oqjCF3fMM
+Hb8cVizOTZ8Th
+yiybPGV2JHxRBbejEu2Eb6MYP7nKxkycbhOnVNu0mXWhRa9pJ30z0E74NgrGV2MnTA1kpyJrG1RsO4rRTvi2itCH5xXDqbFVbyd8c9FO
+DaKSVOqbHogejvhW4Ia
+38BFDWMt3xnXwAAAABJRU5ErkJggg
==
一、爬蟲:就是抓取網頁數據的程序
二、爬蟲如何抓取:
網頁三大特征:
網頁都有自己唯一的URL(統一資源定位符)來進行定位網頁都使用HTML (超文本標記語言)來描述頁面信息。網頁都使用HTTP/HTTPS(超文本傳輸協議)協議來傳輸HTML數據。
爬蟲的設計思路:
首先確定需要爬取的網頁URL地址。通過HTTP/HTTP協議來獲取對應的HTML頁面。提取HTML頁面里有用的數據:
a. 如果是需要的數據,就保存起來。
b. 如果是頁面里的其他URL,那就繼續執行第二步。
通用爬蟲工作流程:
爬取網頁 - 存儲數據 - 內容處理 - 提供檢索/排名服務
第1章 緒 論
伴隨著互聯網不斷的發展,很多從事計算機行業的工作者不再滿足于不能自己控制的目標不夠明確的搜索引擎,于是網絡爬蟲應景而生。網絡爬蟲是一種按照程序設計者所設定的規則,自我驅動抓取網頁信息的程序或者腳本。網絡爬蟲的先進性在于它不僅可以爬取整個網頁并保存,而且具有高度的可自定義性。我們可以根據自己想要獲取的數據格式來調整爬蟲,使其剔除掉無用的部分而保留有效信息。當今著名的搜索引擎公司都采用了不同的爬蟲算法,在其他領域如金融、教育等行業,爬蟲也在發揮著重大的作用。
1.1選題的意義
進入 21世紀,特別是第二個十年,世界互聯網取得了驚人的快速發展。根據分析師瑪麗·米克爾 (Mary Mikel) 2016年發布的一份互聯網趨勢報告,到2016年年中,全球互聯網用戶超過30億,約占全球總人口的40%,中國超過6.9億互聯網用戶維持了多年來全球最大的互聯網用戶市場。互聯網的快速發展,同時互聯網產生的數據量也隨著互聯網用戶的不斷涌入而產生了爆炸性的增長,世界進入了"大數據"時代。歐洲最大的電子優惠券應用提供商Vouchercloud在2015年發布的一份報告顯示,每天在互聯網上生成的數據高達2.5萬億字節 (五分之一字節),這些數據可以充滿超過1億張藍光光盤 (25GB)容量)。因此,如何在互聯網上查詢海量信息中的有價值數據,成為一個需要解決的問題。
在互聯網的早期,人們主要通過瀏覽門戶網站獲得所需的信息,但隨著 WEB 技術的快速發展,使用這種方法來查找所需的信息變得越來越困難。隨著互聯網的發展和壯大,人們對信息的獲取逐漸被網絡所取代。目前,人們大多通過搜索引擎獲得有用的信息,因此,搜索引擎技術的發展將直接影響人們獲得所需信息的速度和質量。
然而,隨著互聯網上數據量的迅速增長,由于不同領域對相同或相似關鍵字的模糊性,使用通用搜索引擎檢索到的結果包含大量的干擾信息,戶往往需要額外支付精力人工去篩選出有效信息。特別是在互聯網快速發展的今天,人們的衣、食、住、行都與互聯網緊緊聯系到了一起。例如,在住房租賃市場上,已經逐步完成了市場對傳統線下實體向互聯網在線遷移的關注,越來越多的租房者通過互聯網尋找合適的住房。互聯網上有越來越多的網站可以提供有關租賃上市的信息。在實際搜索人們的租賃信息的過程中,租賃信息可能會分布在網站的各個頁面上,人們如果想對信息進行比較,往往需要同時打開多個頁面作為參考,所以要想收集多個信息, 這是一個繁瑣和枯燥的過程,它需要大量的時間。此外,當搜索完成時, 如果對租賃信息的分類和整理,也是一條一條記錄,很容易產生錯誤,所以這種傳統的手動查詢不能滿足現實生活的需要,在這種工作狀態下集中體現了以下兩個方面的問題:
一是步驟繁瑣,人員工作量繁重,導致工作效率和準確性下降。
其次,可能導致信息重復、錯誤、遺漏率高、增加時間成本、與高效處理問題的概念偏離。
因此,可以采用現代計算機網絡技術,構建分布式租賃信息自動抓取系統,不僅可以快速、高效地收集、分類、提取、分析和處理租賃信息,與原手工查詢信息相比,提高了信息資源的利用率,降低了人工時間的成本。
1.2 國內外現狀
1.2.1網頁采集的研究現狀
如今,國內外的信息收集系統越來越多,包括各種開源或商用爬蟲。其一般是一個廣義的信息采集系統,具有典型的特點是: 針對所有的網絡平臺進行探索。
其分類包括:
(1)個性化的WEB信息獲取
根據用戶的需求和偏好,以及和用戶的互動等,可以盡可能滿足用戶個性化、多樣化的信息需求,這是用戶的一個重要特點。個性化的 WEB 信息收集。根據用戶的習慣進行分析,設置根系統提供的接口是獲取個性化信息的兩種最常見的方法。SPHINX 是最具代表性的個性化信息采集系統。
(2)面向主題為導向的WEB信息獲取
根據主題的手動設置,有針對性地獲取與主題相關的頁面信息是面向主題的Web信息獲取 (Focused Web Crawling) 的一個重要特征。關鍵詞、樣本采集信息通常被確定為闡述的要點。與包含所有WEB范圍的信息采集系統相比,它具有個性化、針對性, 并能節省硬件和網絡資源,這是一個非常突出的優勢。
(3)增量WEB信息獲取在收集信息
有必要定期更新和優化網頁,這通常是通過增量Web信息獲取來實現的。它的特點是,在很長一段時間內,在要收集的信息更新后,隨后的信息收集工作將以更新頁面為目標,不會去重新捕獲以前收集的信息。高采集效率是其典型特征。其中最具代表性的包括: 天網增量采集系統、ChileCrawler、WebFountain和Univ。
(4)所有基于web的信息獲取
目前, 最廣泛使用的信息獲取方法是基于整個WEB范圍的信息獲取。以最初設置的URL作為入口沿鏈接在網頁上收集,在硬件系統的允許條件下,這種信息采集的范圍可以涵蓋整個互聯網,所以這樣的爬行策略是非常適合大最典型的代表是谷歌。
(5)分布式WEB信息采集
分布式WEB信息采集作為一種協調, 是通過多個協同并行采集目標網站收集網絡信息收集器的一種機制,也是最大的這種采集方法和其他采集方法的優點是分布式WEB信息采集的速度和性能較高。這種信息獲取方式還存在兩個困難,即如何快速處理頁面負載協調和服務數據共享問題。
(6)遷移信息采集信息
通過Web采集器上傳到目標區域的方式收集的,最終結果反饋給本地,這是遷移獲取的一個重要特征。進一步減少了對本地資源的需求,這是一個典型的優勢。缺陷意味著這種模式會給目標區域帶來病毒攻擊的威脅。
1.2.2 網頁信息抽取的技術現狀
網頁中的信息大多是以半結構化的形式存在的,這些半結構化的信息并不能被索引,所以要把半結構化的數據抓換成結構化的數據。網頁信息抽取是指,根據用戶的需要從半結構化的網頁中識別并抽取嵌套在HTML標簽中的信息。按照信息抽取工作的實現原理可分為如下幾類:
(1)基于包裝器模型的信息抽取
包裝器是一種基于規則的文本信息抽取模型。這種抽取方式只依靠語義上下文就可以實現信息定位。這中信息抽取方式的最大特點就是根據大量的樣本運用機器學習的歸納算法進行訓練生成抽取規則,根據訓練生成的抽取規則進行進行信息抽取。
(2)基于網頁結構的信息抽取
這種抽取方式主要是將HTML文檔解析成DOM樹,DOM樹結構是十分便于信息抽取。這種方法十分突出的優點就是使用相對簡單的操作精準的將網頁中的信息抽取出來。
(3)基于自然語言處理的信息抽取
這種抽取方式存在比較大的缺點就是抽取的速度很慢,由于此技術還處在發展階段在抽取信息時存在抽取出來的內容和對于文本內容的理解差異比較大的情況。它的優勢是擅長抽取對象是大量文本的信息源。
(4)基于ontology的信息抽取
這種抽取方式應用的范圍較小,主要的原因是該方法需要大量的人工介入,目前只形成了一套半自動化的抽取方式。這種方式的有點是不依賴網頁結構通過對數據本身的描述信息就能完成的對信息的抽取。
1.2.3 網絡爬蟲發展趨勢
自1994年以來,世界上第一個網絡搜索工具網絡爬蟲問世,目前比較流行的搜索引擎有百度、谷歌、雅虎、必應等。出于商業保密的考慮,各種搜索引擎使用的爬蟲系統的技術內部人員一般不公開,現有文獻僅限于摘要介紹。隨著網絡信息資源的指數化增長和網絡信息資源的動態變化,傳統搜索引擎提供的信息檢索服務已不能滿足人們對個性化服務日益增長的需求,正面臨著巨大的挑戰。以什么樣的網絡接入策略,提高搜索效率,已成為近年來專業搜索引擎網絡爬蟲研究的主要問題之一。
1.3 論文研究主要內容
本文研究的內容主要是爬蟲技術在租房信息爬取中的應用,并采用python實現的開源爬蟲框架Scrapy來開發,解決單進程單機爬蟲的瓶頸,使用Xpath技術對下載的網頁進行提取解析,再利用成熟的數據可視化框架對爬取的數據進行友好可視化。
因此本文的核心研究內容可以總結為以下幾點:
1.分布式爬蟲系統環境的搭建;
2.網頁內容的正確解析;
3.分布式隊列的實現;
4.租房數據的存儲與可視化。
第2章 關鍵技術介紹
本系統設計的目的是讓需要出租或求租的用戶能夠在海量網頁中快速找到目標房源信息,此次設計選擇58同城的房屋租賃信息,通過爬蟲來爬取有關網頁,實現關鍵信息抽取。下面簡要介紹該系統使用的關鍵技術:
2.1 Python語言及開源庫的介紹
2.1.1 python語言簡介
本系統的開發語言為Python,它是一種近些年來逐漸流行的編程語言,是一種解釋型的、面向對象的、帶有動態語義的高級程序設計語言;Python程序的可讀性是業界得到公認的代碼最具可讀性性的語言,讀python的代碼如同讀英文一樣簡單易懂,其創始人Guido van Rossum的初衷就是創造一門具有高度可讀性且功能強大的語言。目前Python不僅在機器學習和大數據處理方面得到廣泛應用,而且在網絡信息爬取和收集方面發揮著重要的作用。它不僅能夠高效地爬取大量信息,可以簡單而迅速地在互聯網上獲取自己所感興趣的信息,而且在關鍵內容解析和提取方面相對于其他語言更加有優勢。
2.1.2 requests庫簡介
requests庫是一個基于Python開發的請求網絡數據并進行抓取的開源第三方庫,requests庫的宣言是:HTTP for Humans(給人用的 HTTP 庫)。的確,正如其宣言所說的那樣,相比Python自帶的urllib和urllib2庫,雖然二者的功能和requests庫一樣,但urllib和urllib2庫語法使用和接口調用并不符合高級程序語言的習慣,而是更加接近底層語言。當然這種模式為程序的執行效率帶來了一定的優勢。而requests庫有著優雅的語法和符合高級語言的使用特點。
(1)requests庫的安裝:以Windows操作系統為例,其實如果配置了并安裝了python3以上版本的python源代碼。則可以通過Python語言安裝Python庫的通用方法pip3命令來安裝,在命令行窗口輸入命令代碼為:pip3 install packgename,packgename為要安裝的安裝包的名字。比如這里安裝rquests庫,那么代碼就是pip3 install requests。如果命令行窗口提示requests install Successfully則表明安裝成功。
(2)requests的功能說明及具體實例:requests的最基本的操作,就是以HTTP的某種方法向服務器端發送一個請求,而requests庫就是這么做的,requests庫設計的非常自然。函數requests.get就是以HTTP的get方法向服務器端發送一個request,其程序的一切工作方式和真實環境中人為操作完全類似,這就是為什么requests庫被稱為最具人性化的庫的原因。現在通過域名“.58.com”在PC瀏覽器端登錄了58同城北京的首頁,這一個操作就是向58同城服務器發出一個request,58同城服務器在收到請求后給返回請求的數據,也就是58同城北京首頁。而request庫的工作原理和這樣人為請求完全類似。
2.1.3 lxml庫簡介
Lxml庫是一個可以從HTML或XML等文件中提取任意想要數據的Python庫.它能夠通過轉換器實現慣用的文檔導航,查找,修改文檔的方式. Lxml會幫普通開發者節省數小時甚至數天的工作時間,尤其對于那些不太了解網頁HTML,CSS,JS等開發語言的開發者來說更是一大福音。
由于Xpth方式在對網頁元素篩選時具有比另外一種網頁解析庫Beautiful Soup具有更高的效率,其對網頁的解析速度是Beautiful Soup庫的十倍左右。所以XPath在Python的爬蟲學習中,起著舉足輕重的地位,所以得到了廣泛的應用。對比正則表達式 re兩者可以其實可以實現一樣的功能,但XPath明顯比re具有優勢,在網頁分析上使re退居二線。
2.2 爬蟲技術及scrapy框架介紹
2.2.1 爬蟲技術簡介
使用爬蟲的前提是了解HTTP協議,通過瀏覽器瀏覽網頁的時候,每點擊一個按鈕,都是向服務器發送一個request,而加載出來的網頁就是服務器返回來的數據,把返回數據的這一行為叫做response。而爬蟲的工作原理就是在模擬真實的瀏覽器或者使用瀏覽器的用戶的上網行為,去向服務器發送請求,然后服務器返回給該爬蟲向服務器所請求的數據。一般通用的爬蟲設計方式是:先從某個網站的已知的URL開始,下載網站頭網頁后,解析出里面有用的URL,并把鏈接URL作為種子URL存放到待處理的隊列中,作為將來爬蟲進行下一步爬取的入口。然后根據一定的爬蟲算法如廣度優先算法、深度優先算法,最佳優先搜索算法等進行搜索抓取網頁,直到滿足特定的條件為止。被網絡爬蟲抓取的網頁會被存儲系統存儲,進行分析與處理,進而建立去重索引,已避免爬蟲的重復爬取。
2.2.2 Scrapy框架簡介
Scrapy作為用python實現的爬蟲庫,被廣泛使用。它為您提供了從網站中高效提取數據、根據需要處理數據以及以首選結構和格式存儲數據所需的所有工具。由于互聯網是多樣化的,在從網站中提取數據時,沒有 “一刀切” 的方法。很多時候都會采取臨時方法, 如果您開始為執行的每個小任務編寫代碼, 那么使用Scrapy框架是最佳的選擇,因為其提供了一系列方便的應用模板。
圖2.1 Scrapy架構圖
Scrapy Engine:負責Spider、ItemPipeline、Downloader、Scheduler中間的通訊,信號、數據傳遞等。
Scheduler:它負責接受引擎發送過來的Request請求,并按照一定的方式進行整理排列,入隊,當引擎需要時,交還給引擎。
Downloader:負責下載Scrapy Engine(引擎)發送的所有Requests請求,并將其獲取到的Responses交還給Scrapy Engine(引擎),由引擎交給Spider來處理。
Spider:它負責處理所有Responses,從中分析提取數據,獲取Item字段需要的數據,并將需要跟進的URL提交給引擎,再次進入Scheduler(調度器)。
Item Pipeline:它負責處理Spider中獲取到的Item,并進行進行后期處理(詳細分析、過濾、存儲等)的地方。
Spider Middlewares:你可以理解為是一個可以自定擴展和操作引擎和Spider中間通信的功能組件(比如進入Spider的Responses;和從Spider出去的Requests)。
第4章 系統設計
4.1 爬蟲的流程設計
一般情況下,一個通用的網絡爬蟲包括種子URL,待抓取URL,已抓取URL,已下載的網頁庫四部分組成。具體如圖4.1所示。其具體的工作流程為:
1.首先確認種子URL,這個URL可能是網站的首頁域名。總之目的是從該網頁獲得以后要抓取內容的網頁的URL,并選取其中想要爬取的種子URL。
2.將這些種子URL放入待抓取URL隊列中,為了便于后期的去重處理,這些URL一般存儲在數據庫里或者列表里。
3.爬蟲系統每次運行時從待抓取URL隊列中取出一個URL,解析其DNS,并且得到主機服務器的IP地址,并將URL對應的網頁下載下來,后用LXML庫解析出關鍵信息并存到數據庫。最后將這些已經使用過的URL放進已抓取URL隊列中。
4.分析已抓取URL隊列中的URL,分析其中的其他URL,并且將URL放入待抓取URL隊列,從而進入下一個循環。
圖4.1 網絡爬蟲流程
4.2 數據庫設計
數據庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,每個數據庫都有一個或多個不同的API用于創建,訪問,管理,搜索和復制所保存的數據。也可以將數據存儲在文件中,但是在文件中讀寫數據速度相對較慢。在目前市面上流行的數據庫無非兩種,一種是關系型數據庫,另一種是非關系型數據庫。
關系型數據庫是建立在關系模型基礎上的數據庫,借助于集合代數等數學概念和方法來處理數據庫中的數據。市面上主流的數據庫如Mysql,oracle,SQLserver都屬于關系型數據庫,通過應用實踐證明,關系模型是非常適合于客戶服務器編程,遠遠超出預期的利益,今天它是結構化數據存儲在網絡和商務應用的主導技術。本項目這里使用Mysql進行數據的存儲,數據表的設計如下:
第5章 系統實現
5.1 URL管理實現
爬取租房信息詳情模塊是爬蟲系統的核心,種子URL在該程序模塊一般仍然需要再次加工,因為要爬蟲自動爬取所有租房信息,但第一個程序抓取的類目URL只能進入商品第一頁。可以肯定的是這種大規模的網站的商品列表并不止一頁,如圖5.1所示。
圖5.1 58同城租房信息列表頁頁碼
所以需要讓程序實現自動更換頁碼。這種情況需要觀察不同頁碼URL的樣式,找出其中的規律,然后利用程序實現自動換頁。觀察58同城同一類目下不同頁碼的商品列表頁的鏈接地址。
頁面2的域名為:
“http://bj.58.com/chuzu/0/pn2/?PGTID=0d300024-0000-1e7f-ec58-54933d31024c&ClickID=3”
頁面3的域名為:
“http://bj.58.com/chuzu/0/pn3/?PGTID=0d300024-0000-1c5a-e5e6-3f9c6886871c&ClickID=2”
觀察后不難發現,兩頁的域名只是隨著頁碼的改變而改變,頁面二的域名是pn2,頁碼3的域名是pn3,其他都一樣(至于域名中問號后面的內容不會影響網頁的加載,所以是否一樣并不大礙)。所以就可以利用python自帶的format函數來實現該功能。程序運行的結果如圖5.2所示。
圖5.2 租房信息詳情頁鏈接
為了規避一些特殊的情況的發生:如爬取到了不存在的頁面,無論是404頁面,還是頁面無信息的頁面,都需要做程序做異常處理,以免爬蟲程序出現癱瘓。
這種情況一般根據極限頁面與普通頁面的不同來進行篩選。比如正常情況下的頁面都是有某個標簽組成,但極限頁面無此標簽。所以此時可以使用find()函數來過濾極限頁面,篩選普通頁面。而404頁面是不存在的頁面。比如58同城里已近下架或者已近出售。58的系統會自動將該頁面進行刪除。以防其他人再聯系賣家。給賣家帶來不便。如果程序不對這種類型的頁面做處理,就會使得程序出現報錯而崩潰。對于這種頁面的處理是通過404頁面的特點進行判斷然后篩選過濾。這種情況一般用狀態碼來做判斷,所謂狀態嗎是指網頁返回的Code,一般為404,403和200。
5.2 頁面數據解析實現
在進行數據爬取的時候,如果爬蟲如果不構造合理的請求頭,就不會將這些字段發送給對方的服務器。對方的反爬程序會將這種請求視為非人類的請求而不予響應或者直接封殺請求來源的IP地址。就好比,人家每家都有門,現在以一個路人的身份直接闖進去顯然不是很禮貌。而且有一些站點不喜歡被程序(非人為訪問)訪問,有可能會拒絕你的訪問請求。但是如果我們用一個合法的身份去請求別人網站,顯然人家就是歡迎的,所以我們就應該給我們的這個代碼加上一個身份,就是所謂的User-Agent頭。
所以爬蟲這時候需要偽造其爬取的目標網站的請求頭,以避開對方的反爬蟲系統。HTTP的請求頭是在你在每次向網絡服務器發送請求時,傳遞的一組屬性和配置信息。比如58同城的請求頭,如圖5.3所示。
圖5.3 HTTP請求頭
而前面介紹過的requests模塊是一個設置請求頭的利器,具體的為將目標網站的頭文件偽造成瀏覽器的樣式進行發送,具體代碼如下:
headers = {
‘User-Agent’: userAgent,
‘Accept’: ‘text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8’,
‘Accept-Encoding’: ‘gzip, deflate, sdch’,
‘Accept-Language’: ‘zh-CN,zh;q=0.8’,
‘Cache-Control’: ‘max-age=0’,
‘Connection’: ‘keep-alive’
‘Cookie’:‘id58=BYP9vldY+bKkELYW/4OXgw==;mcity=qhd;myfeet_tooltip=end; bj58_new_session=1; bj58_init_refer=“http://qhd.58.com/sale.shtml?utm_source=link&spm=s-35409279166478-pe-f-809.pes_pcshop_ershou”;bj58_new_uv=1; bj58_id58s=“K2lUSHM2WUE1TDQyMzY5NA==”; sessionid=3807a2ee-e5bb-40aa-a1b2-8566a4daa9a2;__utmt=1; __utma=253535702.1391934569.1465450349.1465450349.1465450349.1; __utmb=253535702.1.10.1465450349;__utmc=253535702; __utmz=253535702.1465450349.1.1.utmcsr=link|utmccn=(not%20set)|utmcmd=(not%20set); als=0; bj=201669133230; 58home=bj; ipcity=qhd%7C%u79E6%u7687%u5C9B%7C0; f=n; city=bj; 58tj_uuid=d855a902-f081-4b23-9340-1b08713c0090; new_session=0; new_uv=1; utm_source=link;spm=s-35409279166478-pe-f-809.pes_pcshop_ershou; init_refer=http%253A%252F%252Fwww.1shoping.net%252F’
}
而對于數據的爬取,如獲取標題信息:
圖5.4 標題信息例圖
對應的html內容為:
圖5.5 標題信息對應的html內容
接著使用下列代碼即可獲取標題:
html=etree.parse(response.read() )
title=html.xpath(’/html/body/div[4]/div/div[5]/div[2]/ul/li[1]/div[2]/h2/a/text()’)
其他信息的獲取方式類似,不再贅述。
5.3數據存儲及可視化實現
5.3.1數據存儲實現
在數據存儲方面,我們使用Python下的Pymysql庫實現數據庫的連接與數據插入。連接語句如下所示。
pymysql.connect(host=yinxing.settings.MYSQL_HOST,port=3306, db=yinxing.settings.MYSQL_DBNAME,user=yinxing.settings.MYSQL_USER,passwd=yinxing.settings.MYSQL_PASSWD,charset=‘utf8’,use_unicode=True)
通過上面的操作,我們將爬取的租房信息中的標題,地址,價格等信息依次存儲到數據庫里面,前提是事先我們已經在數據庫建好了數據表。
圖5.6是以北京房源為例的數據表信息(因數據過長,只展示部分數據)。
圖5.6 存儲的房源數據
5.3.2 數據可視化實現
數據分析與可視化本質上是數據挖掘與分析最關鍵的一環,可以想象如果不能將數據分析做好,前面所做的一切都將無任何意義。在這里我們選擇Echarts庫來進行數據的可視化,Echarts庫是一個由純 Javascript開發的圖表庫,提供直觀,生動,可交互,可高度個性化定制的數據可視化圖表。因為是用Javascript開發,所以其兼容性非常優秀,可在目前市面上所有的瀏覽器上運行。
在用Echarts時,只能在獲得數據后在HTML文件里單獨調用Echarts。將主要介紹Echarts的使用方式。
Echarts使用方法:
1)到百度Echarts官網下載Echarts,把該文件放在建立的HTML文件夾下。
2)在HTML文件里為Echarts準備一個具備大小的DOM。
3)在HTML文件里引入Echarts
4)在HTML直接調用需要用到的Echarts函數
具體代碼如下:
ECharts
可視化的結果如圖所示:
圖5.6 數據可視化結果
圖5.7 北京市各地區租房數量占比
第6章 系統測試
一個軟件的產生是需要經過一個生命周期的,軟件生存周期或者系統開發生命周期都可以稱為軟件生命周期,該周期不僅記錄了軟件從產生到廢棄的過程,周期內有問題定義、可行性分析、需求分析、系統設計、編碼、調試和測試、驗收與運行、維護升級到廢棄等各個階段。對于軟件來說其中的每一個階段都是不可或缺的,但是軟件測試在其中起著極其重要的作用,只有該系統滿足了系統的需求分析并且能夠正常使用,那么這個系統才是完整的。
軟件測試是在軟件設計完成后對該系統進行嚴謹的測試,以發現系統在整個設計過程中存在的問題并對該問題進行修改,是對軟件需求分析、設計、編碼的最終復查的一系列過程,是軟件質量保證的關鍵步驟。
本次主要對于網頁數據解析部分進行系統的功能測試,該測試主要是為了保證數據抓取的完整性和有效性,防止有效數據的缺失,在完成本部分功能基礎上,實現整個分布式爬蟲系統的正常和穩定工作。
6.1 測試環境
本次測試的軟硬件環境如下所示:
處理器:Inter? Core ?2 i5-4200U CPU @ 1.60GHz 2.30GHz
內存:4GB
硬盤:750G
操作系統:Windows 7
數據庫:MySQL
Python 版本:3.6.5
Scrapy版本:1.5.1
6.2 測試方案及測試用例
根據系統的設計功能和要求,采用黑盒測試的方法對基于Scrapy框架的網絡爬蟲系統進行測試。黑盒測試本質上是根據軟件的需求規格對軟件所實施的測試,該類測試不涉及軟件內部的運作原理,只對結果進行判斷,因此軟件對用戶來說就像一個黑盒子。軟件測試人員以用戶的角度,通過觀察軟件的各種輸入和輸出結果來發現軟件存在的缺陷,從而為后期維護和修改提供參考。
表6-1測試內容
測試內容 測試用例 測試結果
自動翻頁 從首頁爬取,統計爬取最終數量 正常翻頁
價格信息解析 隨機選取幾個詳情頁面進行測試 正常解析價格信息
重復UrL處理 加入重復地址進行測試 對重復地址進行了丟棄
404頁面處理 進入404頁面 正常跳過
6.3 測試結論
通過上述的幾項測試,我們針對測試結果,分析測試報錯原因,并進行調試解決報錯問題。經過再次對基于Scrapy框架的網絡爬蟲系統進行調試,系統最終運行平穩,各個模塊之間接口順暢,房屋租賃信息爬取功能正常有效;分布式爬取功能也能夠有效開展,系統能夠提供各項預期的服務,滿足系統運行目標的實現,符合系統開發要求,也達到了測試的目的。
總結
以上是生活随笔為你收集整理的基于python-scrapy框架的爬虫系统的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。