diff --git a/chapters/01-introduction.md b/chapters/01-introduction.md index fc64cb6..8520180 100644 --- a/chapters/01-introduction.md +++ b/chapters/01-introduction.md @@ -1,6 +1,6 @@ #介绍 -###什么是Github +##Github Wiki百科上是这么说的 diff --git a/chapters/09-refactor-project.md b/chapters/09-refactor-project.md index 7f379a0..22b0057 100644 --- a/chapters/09-refactor-project.md +++ b/chapters/09-refactor-project.md @@ -8,8 +8,6 @@ 艺,需要有创造性的方法。 -#[前端技能训练: 重构一](http://www.phodal.com/blog/frontend-improve-refactor-javascript-code/) - ##为什么重构? > 为了更好的代码。 @@ -68,8 +66,6 @@ regexobject: { 接着,我们就可以对其进行简单的重构。 -###重构 - (ps: 推荐用WebStrom来做重构,自带重构功能) 作为一个示例,我们先提出codeHandler方法,即将上面的 diff --git a/github-roam.rtf b/github-roam.rtf index 6916163..c4f1143 100644 --- a/github-roam.rtf +++ b/github-roam.rtf @@ -284,533 +284,6 @@ git push -u origin master\par} {\pard \ql \f0 \sa180 \li720 \fi0 \u8230?or push an existing repository from the command line\par} {\pard \ql \f0 \sa180 \li0 \fi0 \f1 git remote add origin git@github.com:phodal/github-roam.git\line git push -u origin master\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs36 Github\u39033?\u30446?\u20998?\u26512?\u19968?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 \u29983?\u25104?\u22270?\u34920?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u22914?\u20309?\u20998?\u26512?\u29992?\u25143?\u30340?\u25968?\u25454?\u26159?\u19968?\u20010?\u26377?\u36259?\u30340?\u38382?\u39064?\u65292?\u29305?\u21035?\u26159?\u24403?\u25105?\u20204?\u26377?\u22823?\u37327?\u30340?\u25968?\u25454?\u30340?\u26102?\u20505?\u12290?\u38500?\u20102?{\f1 matlab}\u65292?\u25105?\u20204?\u36824?\u21487?\u20197?\u29992?{\f1 numpy}+{\f1 matplotlib}\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u25968?\u25454?\u21487?\u20197?\u22312?\u36825?\u36793?\u23547?\u25214?\u21040?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 {\field{\*\fldinst{HYPERLINK "https://github.com/gmszone/ml"}}{\fldrslt{\ul -https://github.com/gmszone/ml -}}} -\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u26368?\u21518?\u25928?\u26524?\u22270?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 {\pict\pngblip\picw800\pich400\picwgoal11620\pichgoal5800 89504e470d0a1a0a0000000d4948445200000320000001900806000000562504340000000473424954080808087c086488000000097048597300000f6100000f6101a83fa7690000200049444154789cec9d7b5c5475feff5f0322205e0151040d6f28e6fd12ddd4b44c2bb7b6eca256565a5bd945fd6697ad6d736bcb36bbb8df757fed77b78bb6955959e9ea2615a664199a6869a2602a2a606080a222209cdf1fef3e30c00ccc997366e6ccccebf978f818993933e7337366cef9bc3eaff7c5a6699a0642082184104208f10221be1e002184104208212478a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1000a74e9dc2534f3d85499326213a3a1a21212158b66c99c36db3b3b33169d224b46bd70e313131983163068e1d3be670dbd75f7f1d292929888c8c44727232962c59e2c9b741082184104288e5a10001505c5c8c679e79067bf7eec5d0a1430100369badc976478e1cc1983163b07fff7e2c5cb810f3e7cfc7dab56b3161c20454575737d8f6fffeefff70d75d7761d0a04158b264092eb8e0023cf8e08378e18517bcf29e082184104208b122364dd3345f0fc2d7545555a1acac0c717171d8b66d1b468d1a85a54b9762c68c190db69b3d7b36de7aeb2decd9b3078989890080f4f4744c9830a14e700040454505ba77ef8e0b2fbc10ab57afae7bfeadb7de8a4f3ef904870f1f46c78e1dbdf706092184104208b108744000b46edd1a7171710080e6f4d8ca952b3179f2e43af10100975e7a29929393f1fefbefd7ddf7e5975fa2a4a404b367cf6ef0fcfbeebb0fa74e9dc2dab56b4d7e07841042082184f80714202e929f9f8fe2e2628c1c39b2c963a3468dc2f6eddbebfe56ff6fbcedf0e1c3111212821d3b767876b0841042082184589456be1e80bf5058580800888f8f6ff2587c7c3c4a4a4a505d5d8db0b03014161622343414b1b1b10db66bddba35626262505050d0e4358e1d3b86b4b434242525213232d2336f821042082184b84d4545050e1e3c888913273699e711d7a10071918a8a0a004078787893c7222222eab6090b0b434545055ab76eedf075c2c3c3eb5ecb9eb4b434dc72cb2d268e9810420821847882b7df7e1b37df7cb3af87e1b75080b88872252a2b2b9b3c76e6cc9906db444646a2aaaacae1eb9c3973c6a1c3d1b3674f00f2854e49493165ccc43ce6ce9d8bc58b17fb7a18c4093c3ed685c7c6baf0d8581b1e1f6b929d9d8d5b6eb9a56ede46dc8302c44554e8950ac5b2a7b0b010313131080b0babdbb6a6a606c78e1d6b60cf555555a1a4a404ddba756bf21aca45494949c1f0e1c33df11688013a76ecc8e36261787cac0b8f8d75e1b1b1363c3ed646cddb887b3009dd45121212d0b973676cddbab5c9635bb66ca9eb1f0200c3860d038026db7ef7dd77a8adad6db02d218410420821c10405880ea64c9982356bd6e0c8912375f7a5a7a72337371737dc7043dd7de3c78f477474345e7df5d506cf7ff5d55711151585abaebaca6b63268410420821c44a3004eb57962c5982b2b2b2ba0a55ab57afc6a1438700000f3ef820dab76f8fc71f7f1c1f7cf001c68d1b873973e6a0bcbc1c8b162dc2e0c18371c71d77d4bd564444049e79e619dc77df7db8f1c61b71f9e597e3abafbec23befbc83e79e7b8e4d08092184104248d04201f22b2fbdf412f2f2f20000369b0d1f7ffc313efae823d86c36cc983103eddbb747626222366edc88fff99fffc1638f3d86f0f0704c9e3c192fbdf4525dfe87e2de7bef455858185e7ae925ac5ebd1a3d7af4c0e2c58bf1e0830ffae2ed11834c9b36cdd74320cdc0e3635d786cac0b8f8db5e1f121818c4d6baef537f11a59595918316204b66ddbc6a43342082184100bc2f99a39300784104208218410e2351882450821c414727373515e5eeeeb611042885bb46bd70e7dfbf6f5f53082020a1042082186c9cdcd457272b2af8741082186c8c9c9a108f10214208410420ca39c8fb7df7e1b2929293e1e0d2184e8437538a78beb1d284008218498464a4a0a1333092184340b93d0092184104208215e830284104208218410e2352840082184104208215e830284104208218410e2352840082184104208215e830284104208218410e2352840082184102f919494849e3d7bfa7a188478940d1b36202424047ffad39f7c3d1462512840082184102f62b3d90c3d3f242404e3c68d3369340db9eaaaab10131383dada5a9c3e7d1aefbcf30ea64f9f8efefdfba36ddbb668dfbe3d468d1a85975f7e19d5d5d54e5f67f7eeddb8f1c61b11171787c8c848f4efdf1f0b162cc09933679a6c7bfcf8712c5ab40837df7c33060c188056ad5a21242404e9e9e92e8ffbd8b163888f8f47484808468f1eedd67bafa9a9c12bafbc82c18307a34d9b36888989c155575d85cd9b373bdcfef3cf3fc7430f3d844b2fbd1431313186f6ad282929c1dcb9739194948488880824242460d6ac59c8cfcf77b8fdebafbf8ebbefbe1ba9a9a968d3a60d424242f0e4934f1a1a839e63d71246bfeb2470612342420821c4cff0c4c4aebcbc1ce9e9e998366d1a424242909191815b6fbd1531313118376e1caebbee3a94949460f5ead5983f7f3e3efae823a4a7a7233c3cbcc1eb64666662fcf8f1a8a9a9c1f5d75f8feeddbb233d3d1d4f3ffd34d2d3d3919e9e8ed6ad5bd76d7fe0c0013cfae8a3b0d96c484c4c44e7ce9df1f3cf3feb7a8f77df7d374e9d3a05c0bdcf46d3344c9d3a152b57ae44fffefdf1c0030fe0975f7ec18a152b3066cc18ac5cb912575f7d7583e7fcfdef7fc7ead5ab111919893e7dfaa0b4b4d4d071f9e5975f70e1851722373717975e7a29a64f9f8eecec6cbcf9e69b58bb762d366fdedcc43d7be8a18770e2c409444747232121013ffdf493a131e83d76ce484d4dc59e3d7b101b1bebf6584880a3114bb06ddb360d80b66ddb365f0f85104274c373986b9c73ce395acf9e3d0dbd86cd66d3c68d1b67d288ea79efbdf7349bcda6ad5ab54ad3344ddbb16387f6eebbef6ad5d5d50db62b2f2fd7468c18a1d96c36eda5975e6af0d8d9b367b59494142d242444fbcf7ffe53777f6d6dad76fdf5d76b369b4d7bfef9e71b3ca7b4b4545bbf7ebd565a5aaa699aa6dd76db6d9acd66d3d2d3d35d1af7b265cb349bcda6fde31fffd06c369b367af468ddeffddd77dfd56c369b76f1c5176b95959575f76fddba550b0f0fd7e2e2e2b4f2f2f206cfd9bc79b3b67bf76eadb6b6563b78f0a0dbfb56fcee77bfd36c369b367ffefc06f7ffeffffeaf66b3d9b449932635794e5a5a9a76e8d0214dd3346de9d2a59acd66d39e7cf249b7f6efceb10b245c3d87f15c670e0cc1228410424c66c9922538f7dc7311191989c4c4443cf0c003387efc7893ed4e9c3881458b1661fcf8f1484c4c44787838e2e2e270cd35d7e0db6fbf6db0edd2a54b111222976d1563affed9c7da2f5dba1453a64c41af5ebdd0a64d1b74e8d001175f7c31de79e79d66c7fcf1c71f232a2a0a13274e04000c193204d3a64d43ab560d8325dab66d8b871e7a0800b071e3c6068f6ddcb8117bf6ecc19831633079f2e4bafb6d361b5e78e10500c03ffef18f06cfe9d8b123c68d1b878e1d3b363b3e471c3a74080f3ef820eebcf34e4c9a3449f7f315afbefa2a00e0cf7ffe738315fe912347e2a69b6e427171313efcf0c306cf39fffcf3919292029bcd064dd3dcde37009c3c7912fffef7bfd1b66d5b2c58b0a0c163f7df7f3f7af4e881b4b4341c3870a0c163975f7e39ba77ef0e0086c7e0ceb17386b31c90fdfbf7e377bffb1dfaf4e95317e63678f060dc7befbd28292969b06d6565259e7ffe790c1a3408515151e8d0a103c68c19830f3ef8a0c9fe0e1e3c88909010dc71c71d3878f020a64e9d8ad8d85844464662d4a85158bb76adde8f8378180a10420821c444e6cc9983071f7c10c78f1fc7dd77df8da953a762ddba759830614293bc89ddbb77e30f7ff8035ab56a85dffce63778e8a1873061c204ac5fbf1e63c68c415a5a5addb6c3860dc3534f3d054092d9172c5850f7cf3e2764f6ecd9387cf8302eb9e412cc9b370f53a74e455e5e1e6ebdf556fcf18f7f7438e6caca4afcf7bfffc5c489139b845439428992c6e264fdfaf500e0500cf4ecd9137dfbf6c5a14387b07ffffe16f7d1129aa6e1f6db6f47a74e9df0f2cb2fbb3d013f73e60cbef9e61b44454539cce1b8e28a2b00005f7ef9a5a1f136c7b7df7e8b3367cee0a28b2e4254545483c76c365bdde7e9c93178e2d8d9878315161662d4a85158ba7429060d1a843973e660c68c19e8d9b327de7efb6d1c3d7ab46edbaaaa2a4c9c38118f3ffe386a6b6b71fffdf7e3d65b6f454e4e0e6ebae9263cf1c4130ef797979787d4d4541c3a7408b7dd761b6ebae926ecdab50bd75c730d366cd8e0f2b889e7610e082184109f71fa34b0678ff7f7dbbf3fd0a68df9affbcd37dfe06f7ffb1bfaf4e9832d5bb6d4adea3ffbecb318376e1c0a0b0b91949454b7fd80010350585888e8e8e806af939f9f8ff3ce3b0ff3e6cdc3eeddbb0188233164c810fce94f7f425252925331f1e38f3f36c915a8aeaec615575c81e79f7f1ef7dc730fba75ebd6e0f12fbef802274f9ec475d75de7d2fb7ce38d3700349daceeddbb1700909c9cecf0797dfbf6456e6e2e727373d1ab572f97f6e58cc58b1763e3c68df8fcf3cfd1b66d5b1c3b76ccadd7f9e9a79f505b5b8b5ebd7ad5394cf6f4e9d307009093936368bccdd1d2e7a6c6909b9bebb331183d761f7ef8214a4b4bf1d7bffe150f3cf04083c72a2a2a1a8895975e7a09191919b8f2ca2bb17af5eabae3f2d4534fe1bcf3cec3c2850b3179f2645c70c1050d5e67c3860df8d39ffed420117ffaf4e998346912162d5a844b2eb944f7b88967a000218410e233f6ec01468cf0fe7eb76d03860f37ff75df7cf34d00c0134f3cd120a4283c3c1c0b172e6c52bdaa7dfbf60e5f2721210153a64cc192254b70e4c811242626ba3c0647657ec3c2c2307bf66cac5fbf1ee9e9e9b8f5d65b1b3cfef1c71fa375ebd60d426f9cb164c912a4a5a561d8b0619839736683c7549859870e1d1c3e57dd5f5656e6d27b71c6eeddbbf1f8e38fe3de7befc5f8f1e30dbd96b7c61cec635002232222a2c9639191910dfe7ee38d3710121282975f7eb98128ecdcb9339e7cf249dc79e79d78edb5d79a0890a4a424fce10f7f68709f0a53dbba75ab5be3269e810284104288cfe8df5fc4802ff6eb09b2b2b260b3d93076ecd8268f5d74d1450e57d8bffefa6bfcf5af7fc5e6cd9b515c5c8caaaaaa068fe7e7e7eb1220870e1dc25ffef217a4a7a7e3f0e1c3a8a8a868f07841414183bf6b6b6bb17af56a5c72c9254e0591e2a38f3ec2dcb973111f1f8f952b57223434d4e57199457575356ebdf556242424d4e52600cd57bf5abc78719389f3b5d75e8b214386786c9cf61c3f7e1cafbcf24a93fbe7cd9be774c26f363b76ecc0279f7cd2e0be4e9d3a61ce9c395ed9ffd5575f8dc71f7f1cf7dd771fd2d2d270f9e597e3e28b2fc68001031a6c575e5e8e9f7efa098989890edd18253877ecd8d1e4b1a143873afc1e74efde1d99999926bd13620614208410427c469b369e71227c855a45eed2a54b93c75ab56ad5a42ce9c71f7f8cebafbf1e6ddab4c1840913d0bb776f444545212424045f7ef925366edc88caca4a97f7bf7fff7e9c77de79282b2bc39831633069d22474e8d001a1a1a13870e000962d5bd6e4f5befaea2b1c3b760cd75e7b6db3affdc9279f60ead4a9e8dab52bbefcf2cb06a1640a35997694706f7fbf3b09e78a850b1762c78e1dd8b06103dad8c5d1359703f2d7bffe15797979757fdb6c36f4ead50b43860cf1ca984b4b4bf1f4d34f374858b7d96c983973263a74e8e095317cfffdf778fae9a71bdc9794945427403c3d861e3d7a60cb962d58b06001d6ad5b878f3efa08808883f9f3e7d78565a9fdc4c7c73b7c9dae5dbb0270ecc4381b5bab56ad505b5bebd6b88967a000218410424c424de28e1e3dda2414eaecd9b33876ec187af4e85177df934f3e898888087cf7dd77e8d7af5f83edf3f3f39b54996a89975f7e1925252558ba742966cc98d1e0b1e5cb9763d9b2654d9ef3f1c71fc366b3e1b7bffdadd3d7fde0830f307dfa7474ebd60debd7af47efdebd1d6ed7ff576b49e5133426373717369bcd699e812b64656541d334872e13006cdab409212121e8d0a1034a4b4b01a049f5287b7af7ee8d909010ecdfbf1f3535354d5c1d95776164cc494949cd4e80d5e7e62ccfc48c31dc76db6db8edb6db5a1c83278f5dfffefdf1de7befa1a6a606df7fff3dbef8e20bfced6f7fc39c39731015155527c80034484ab7a7b0b01080f35031e21fb00a16218410621223468c80a6690e85c3a64d9b9a4c42f7eddb8701030634111fb5b5b5d8b46993c37dd86c36d4d4d4387c6cdfbe7db0d96c9832654a93c79c89994f3ef904175c708143d70600de79e71d4c9b360d898989d8b871a353f101d487c7ac5bb7aec963fbf7ef476e6e2ece39e71c87792aae72f9e597e3ce3bef6cf2efa69b6e0220eed39d77ded9ec64db9e8888085c74d1453875ea14befaeaab268f7ffae9a7006038d7a439ce3fff7c444444e0ebafbfc6c993271b3c565b5b8bcf3efb0c369bad490e919978e3d829424343317cf8703cf2c82358be7c390060d5aa55008076eddaa177efde3872e408f6eddbd7e4b9aa12d8f040b24e83100a10420821c4246ebffd760052f54aadbe0352eaf5f7bfff7d93ed7bf6ec899c9c9cba555d404289162c5880ecec6c87f1ec313131387cf8b0c3fdf7ecd9139aa63529d79a969686d75e7badc9f65959593874e890d3f0ab65cb9661c68c19484a4a42464686c3b02b7bc68e1d8b949414646464e03ffff94fddfdb5b5b578f4d1470100f7dc734fb3afa1701652357bf66cfcf39fff6cf2eff9e79f0720d59afef9cf7f62f1e2c52eed0700eebdf75e00c01ffef08706216a5bb76ec58a152b101717e750d4994554541466cc988193274f36e903b264c912e4e5e561e2c4892d7efe4670e7d855545460cf9e3d4ebf8ff6646565390cef524e877d38ddcc9933a1691a1e7ef8e106a2fdd8b16378e69967eac2d788ffc2102c420821c4242ebcf0423cf0c003f8dbdffe8681030762ca9429080b0bc3aa55ab10131383f8f8f80613eb79f3e6e19e7beec1b061c370dd75d7212c2c0c5f7ffd35b2b3b3f19bdffca6c1445071d96597e1bdf7dec3d5575f8d61c386212c2c0c63c78ec5e8d1a3317bf66cbcf9e69bb8e1861b70fdf5d7233e3e1ebb76ed425a5a1a6ebcf146ac58b1a2c16ba9387c4702e4cb2fbfac9b085e72c92578fdf5d79b6cd33889392424046fbef926c68f1f8febafbf1ed75f7f3dba77ef8ef4f4746cdbb60d175f7c31e6cd9bd7e475e6cf9f5f574657393f8b162dc2bffffdefbaf15d73cd35cd7ef6461af14d9d3a151f7df4113efcf0430c1b360c93274fc62fbffc82152b5640d334fceb5fff42dbb66d1b3c67d3a64d75a24eb9163939397522d466b3d555457385e79e7b0e1b366cc0cb2fbf8c1d3b7660d4a851c8cecec6ead5abd1a54b17fcfdef7f6ff29cd75e7badeef3526ec1ead5ab71e8d02100404a4a4a9d786809778e5d666626c68f1f8fb163c7b6d8a3e4adb7dec23ffff94f5c7cf1c5e8d5ab173a75ea849f7efa09fff9cf7f10111181b973e7d66d3b7ffe7c7cfae9a758b56a15860c19822baeb802a74f9fc6071f7c8063c78ee191471ec185175ee8d2fb52186dd4484cc6ebbdd78943b66ddba601d0b66ddbe6eba11042886e780e6bc892254bb49494142d3c3c5c4b4848d0eebfff7eedf8f1e35a525292d6b367cf06db2e5dba541b3a74a8161515a575eedc59bbeebaebb45dbb76690b162cd0424242b48d1b3736d8bea8a8489b3e7dbad6a54b172d3434540b0909d1fef4a73fd53dfecd37df68e3c78fd73a75eaa4b56bd74e1b3d7ab4b66ad52a6dc3860d9acd666bb0ed800103b4214386387c0f4b972ed56c369b161212a2d96c3687ff1abf17c5eeddbbb51b6eb8418b8d8dd5c2c3c3b57efdfa690b162cd0ce9c39e370fba4a4242d2424a4c93fb57ffb313be3c081039acd66d3468f1edde2b68e387bf6acf6ca2baf6883060dd2222323b5e8e868edaaabaed2366fdeec707bfbcfc7d9b8f5525252a2cd9933473be79c73b4d6ad5b6bddba75d366cd9aa5e5e7e73bdcfef6db6f77380675dfb871e3748f41cfb153dfa9c6fbf9f2cb2f9b7cd7323333b57befbd571b326488161d1dad4546466a7dfbf6d566ce9ca9fdf8e38f4d5efbcc9933da73cf3da70d1c38508b8c8cd4dab76faf8d1e3d5a7befbdf79a6cab8efd1d77dce1f03d5d72c9252d1e0f57cf613cd799834dd32809ad40565616468c18816ddbb631ae9110e277f01ce67fe4e4e4a07ffffe78eaa9a7ea3aac136206ebd6adc395575e89850b17baecc0f81a57cf613cd79903734008218490204455bf6aa9fc2e217a51d5bcf4f4af21c105050821841012843cfae8a3a8a9a9c1e0c1837d3d14122064646460debc7978eaa9a7d0b66d5b4c9a34c9d7432216850284104208218418e6cb2fbfc41b6fbc81810307e2f3cf3f474c4c8caf87442c0aab60114208218410c3309f88b80a1d1042082184104288d7a00021841042082184780d0a1042082184104288d7a000b11867cef87a04841042082184780e0a108bf1c413be1e012184104208219e8355b02c465999af47400821ee939d9dedeb211042886e78eef22e14201683028410e28fb46bd70e0070cb2db7f878248410e23eea5c463c0b0588c5a0002184f8237dfbf6454e4e0ecacbcb7d3d146251727381a9538137de00860c91fb3efb0cf8fdef818d1b81b66d7d3b3e42dab56b87be7dfbfa7a18410105884eb66ddb86279e78029b376f86a669b8e0820bf0c20b2f60883a9bda919d9d8d79f3e6e1ebafbf46ebd6ad71d55557e1e5975f466c6cacd3d73f7e1ca8ad0542989d4308f13378e126cdb17fbfdcfee63780ba0c9e3e2db7b1b1c08001be191721c4fb709aab83acac2c5c7cf1c53878f020162c58803ffef18fc8cdcdc5d8b163919393d360db23478e60cc9831d8bf7f3f162e5c88f9f3e763eddab598306102aaabab9dee43d3e882104208093c7272804e9d809898fafb1213e5f6c811df8c8910456d2d70d555c0faf5be1e4970400744074f3ef924a2a2a2b079f36674ead40980c43b272727e3f1c71fc7871f7e58b7ed73cf3d878a8a0a6cdfbe1d89bf9e61cf3bef3c4c9830014b972ec55d77dde5743fc78e01d1d19e7d2f8410428837c9c9019293019badfebe6edde4363fdf37632244515202fcf7bfc0ac59be1e4970400744075f7df5152ebbecb23af101005dbb76c5983163b066cd1a9c3a75aaeefe952b5762f2e4c975e203002ebdf452242727e3fdf7df6f763fc78e993f76420821c497ecdd2b02c49ed6ad81b8383a20c4f71417cb6de7cebe1d47b04001a283aaaa2a44464636b9bf4d9b36a8aaaac2ae5dbb0000f9f9f9282e2ec6c891239b6c3b6ad4286cdfbebdd9fd508010420809347272807efd9ade9f984801427c4f5191dcc6c5f9761cc10205880efaf5eb87cd9b37a3b6b6b6eebeaaaa2a64666602000a0a0a00008585850080f8f8f826af111f1f8f92929266f34028400821840412bffc22212e8d1d10004848600816f13d7440bc0b734074307bf66cdc7befbd98356b161e79e411d4d4d4e0cf7ffe338e1e3d0a00a8a8a868701b1e1edee435222222eab6090b0b6bf27868e85cbcf452477cf249fd7dd3a64dc3b469d3cc7e3b841042885750755a1c0990c444e09b6fbc3b1ed23c5bb648a96407d39880a5a80868d50ae8d8b1febee5cb9763f9f2e50db62b63a52053a000d1c1dd77df8dc3870f63d1a24558b66c190009a97ae49147f0ecb3cfa2edaf45cc55985665656593d73873e64c836d1a131fbf1893270fc75ffee2897740082184781f2540faf469fa181d106b71f22470e185c0b265c0cd37fb7a34dea3b858dc0ffb36088e1680b3b2b23062c4082f8f2ef06008964efefce73fe3e79f7fc6a64d9bb073e74e646666a2a6a6060090fcebd28e0abd52a158f6141616222626c6a1fb0188f2660816218490402227479c8ea8a8a68f2526ca75efd7f539e263f2f3819a1ae0d7e08ea0a1a888e157de840e881b74ecd811175e7861dddf5f7cf105ba77ef8efefdfb0300121212d0b973676cddbab5c973b76cd982a1438736f3da1420841042020b5582d7110909725b5000f4eae5bd3111c7fc9ace8a5f7ef1ed38bc4d511113d0bd091d1083ac58b102df7df71de6ce9ddbe0fe2953a660cd9a35386257da233d3d1db9b9b9b8e1861b9cbe1e050821849040c351095e059b115a8b6015202a048b78073a203ac8c8c8c0d34f3f8d891327223a3a1adf7efb2d962e5d8a2baeb80273e6cc69b0ede38f3f8e0f3ef800e3c68dc39c3973505e5e8e458b1661f0e0c1b8e38e3b9ceea34387fa5859420821c4dfa9ad0572738199331d3fae1c10e681588360152045454033012ac464e880e820313111ad5ab5c2a2458b70fffdf7e39b6fbec1b3cf3e8b55ab56212424a4c9b61b376e44efdebdf1d8638fe1c5175fc4e4c993f1f9e79f3bcdff00c40109b61f3d2146a8aa027af706366ef4f5488837a8ae9644661e6fffe1c811c9ef70e680b46b07b46f4f07c42a2801126cd1187440bc0b1d101df4ead50bebd6ad7379fb010306e8da1e10015252220960a1a17a474848f071f830b07f3fb073273076acaf47433c4d6929f0d34fc0f6ed3cdefe4273257815090914205621181d909a1a79bfcc01f11e74402c46a74e80a6c9459610d2327979725b52e2db7110efa0ce8daa6b31b13e3939d25f2129c9f93689890cc1b20aea38049300f9e517997b5180780f0a108ba11ae0049bf54988bb2801124c17cb6046f500fbf967df8e83b84e4e8e8449b66a26e62231910e8855282800dab6ad9f9407036a41832158de8302c462508010a20f3a20c18572402840fc87e64af02ad88cd01a689a0890810325bfeed4295f8fc83b1417cb2d1d10ef410162313a74905b0a10425c830224b8500e0843b0fc87bd7b817efd9adf263111282c94587ce23b4a4b81ca4a60d020f93b589c653a20de8702c462b46f2fb7c1f2a327c4280c1c77db730000200049444154c10a2ee880f8179595c0c183ae392035353caebe4625a007a30069ddba7e0e463c0f0588c568d54a12d1e98010e21a7440820b7b072458e2d3fd99fdfba50f484b0284cd08ad41b00a105582d766f3f54882070a100b121b4b0142882bd4d64a19deeedd29408205e5809c39039497fb762ca4655c29c10bb019a155500264e040b90d16015254c4fc0f6f43016241284008718dc242694c376c984c4c6b6b7d3d22e269ec4b94330fc4fae4e44845a5ae5d9bdf2e36564260e880f896820239163131405858f00890e2620a106f43016241284008710d157e356c98888fe3c77d3b1ee279caca806edde4ffcc17b03eaa02564ba12d361b9b115a818202f97dd96c224282458014153101dddb5080589098180a10425cc15e8000c173b10c664a4beb2b2ad101b13e7bf7b61c7ea5603342df939f5f2ff0834980d001f13e142016243636787ef48418212f4f7ae7a80ecbcc03097ccacaa4a95d68281d107f2027a7e512bc0a3623f43dca0101824b80d001f13e14201684215884b8465e1e70ce394074b4fc4d0112f89496cac4a873670a10ab73fcb81c23571d103623f43d8d054830cc45aaabe5bc4207c4bb50805890d858f9319c3debeb9110626d9400898991bf8365b52e98292b13d72b2e8e2158562737576ef584601d39c2f2cabea2b6560a7ba88a64c1e28028914507c4bb50805890d858b9e56a2e21cda304486424101ecedf4ca0535b2b02a45327a04b173a20564795e0eddbd7b5ed1312a4bcb27da533e23d8a8ba51964b08560a9850c3a20de8502c482280162d4faacae067af502d6af373e2642ac86a6d50b109b4dc2b02840029b93274584d001f10f7272442876e8e0daf66c46e85b540f90601320c5c5724b07c4bb50805810154e625480141602070e009b36191f132156a3a40438754a0408103c17cb6046ad8cd301f10f54095e57613342dfe248809c38218b99810c1d10df400162419403627432a54e26ca062724905025789500a10312f89495c96dc78e2240e880589bbd7b5daf800548b3c290103a20bea2a0403e7f3511578ba1817e5e2d2e9630dea8285f8f24b8a000b1209d3a4948895107440990bd7b8d8f8910abe14880d001096cec1d90b83811249595be1d13718ca6e97740c2c244585280f8868202f9fc5bb592bf83a5b8872ac1db52b34c622e14201624345426536609909c1c56152181475e9eac5aa9b8dd9898c05fa90b761a3b20407dfc36b116478f4ace8e1e0102b019a12fb16f4208048f00611342df40016251cce805a24ee2274e305481041e7979408f1ef5ab560cc10a7c9403a292d001e681581515faab57802424d001f115f63d4000f3c2c1ad0e9b10fa060a108b628600292890500580792024f05015b0144c420f7ccaca244e5b85ea005c5cb12a3939924fd0ab97bee7d101f11d8d05889a3f04fa79b5a8880e882fa000b1286609908b2e9215620a101268341620d1d13241ada9f1dd988867292dad9f14a9154b3a20d6242707484a92fe3c7a50cd0889f7692c405ab512b731d0054871311d105f40016251cc58cd2d2890d5a773cea1002181872301a269c0f1e3be1b13f12ca5a53221026462dbb123058855d19b80ae484890858453a7cc1f13714e75b53801aa14b222189c653a20be8102c4a298e58074eb2665102940482071ea945c141b876001817fb10c66541774059b115a17bd257815aa1921c3b0bccbcf3fcb028ebd030204be00a9ac943c590a10ef430162518c0a90d3a7e5629d9020ab502cc54b0289c625780171400026a20732f60e08c0668456e5ec59e0a79fdc7740000a106fd3b809a12226c6f862a895611774df4101625162632594c4dd0ea4858572dbad9b5c04f6ed636c3c091c9a132081bc5a17ecd001f10f0e1e1411624480300fc4bb34274002f99caa04081d10ef430162518c96bfb33f9924278b9051933642fc9dbc3ce997e3a8663d1d90c0c53e091da0036255dc2dc10b006ddac831a600f12e0505525d4e9d4715812e40d402061d10ef43016251940071d7fa6c2c4000e68190c0212f4f62c555c75e409a1246445080043265654d43b0e880588f9c1cf92daa7c0ebdb014aff7292800e2e3a574b23d812e401882e53b28402c8ad184dafc7ca997dfae1dd0bdbb548ca100218142e30a588a40bf58063b8d1d90b8389940d4d6fa6e4ca429393940dfbe4d27b3aec26684dea7711774454c8c2cea689af7c7e40d8a8a64aed4a68daf47127c50805814331c906edda407486828d0a70f0508091c9c091076430f5c2a2b818a8aa60e484d0d8fb9d5c8c971af0296820e88f769dc0344111323f93c274e787f4cde8025787d07058845e9d851568f8c0a10054bf19240820224f8282b93dbc60e08c03c10abb177af7bf91f0a3623f43ecd091020709de5e2620a105f4101625142428c95bf6b7c3261295e12285455c9f79b2158c18512208d1d1080792056e2d429110f4604484282884a77ab4012fd1414346d4208182f8863758a8a98ffe12b28402c8c915e208e04c8a14312c240883f73e488c423d301092e4a4be5960e88b5d9b74f6e8d3a209a565f4e9e78963367e4bc49078478130a100be3ae00d1b4a6ab19ea62a02e0e84f82b8e7a8028a2a303f74219ec387240dab5936a4b1420d6c148095e057b817817fbbe618d0974014207c4775080581877c349cacbc5066fec8000cc0321fe8f12203d7a347d4c556c2181872307c466633342ab9193230b018dfb49e84195ef6522ba7770d6841090ea501111812b40e880f80e0a100be3ae03e2e864121b2b2b871420c4dfc9cb93d8ff8888a68f4547cb4a794d8df7c7453c4b599954f48b8a6a783f9b115a0ba309e8805cab2223e980788be6040810b8b975a74f03274fd201f115142016c64c0162b3c945810284f83bce2a6001f5abae6ab59c040eaa0788cdd6f07e3a20d6a1b212f8f453e0a28b8cbd8ecdc652bcdea4a040045f870e8e1f0f5401a29a10d201f10d142016c65d01a24edaf1f10def67295e1208342740a2a3e59661588147e32ee80a3a20d661f56ab966cd9c69fcb5d88cd07ba826848dc5bdc248454e2b4301e25b28402c4c6cace4735455e97b5e41815ca81b77f664295e1208508004278dbba02bba74a10362155e7f1d38ff7c60c000e3af4507c47b38eb01a2085407449d371882e51b28402c8cbbf5b79d9d4c9293e5b502f144428283da5ae0f0e19643b0f81d0f3c4a4b1d3b207171e280689af7c744ea397408f8ec33e0ce3bcd793d3623f41ec12a4094034201e21b284074f2dd77dfe19a6bae41b76edd101515859494143cf3cc33a868d460233b3b1b93264d42bb76ed10131383193366e0984e0f534da6f45a9fcd091000c8cdd5f77a845885a347c511742640d40a391d90c0a3acccb90352512195ff88ef58ba545cf71b6f34e7f51212e45a565b6bceeb11e7386b42a8085401525404b46f0f8487fb7a24c1492b5f0fc09fd8b973272ebef86274ebd60d73e7ce45747434bef9e61b3cf5d453d8b66d1b3ef9e41300c09123473066cc1874ead4090b172e447979395e7cf145ecdcb9135bb66c415858984bfb530e883b02a44f9fa6f7abfb7272c42627c4df68ae07082089949191142081486929d0bb77d3fbed9b11b66debdd3111a1b61678e30de0a69ba4378b192426ca62c3b1638cd1f734c1ec80f0bbe53b284074f0de7befa1aaaa0a6bd7ae454a4a0a00e0ce3bef446d6d2dde7aeb2d1c3f7e1c1d3a74c073cf3d878a8a0a6cdfbe1d89bf16343fefbcf33061c2042c5dba1477dd75974bfb332240c68e6d7a7fdbb6b2cac14474e2afb4244080c0bd58063bcd392080ac663a1228c4f3a4a7cb6f73d62cf35ed3be192127899ea3bc5cfeb524404e9d922a6781e416b009a16f6108960e2223230100718dce865dbb76456868285ab76e0d0058b97225264f9e5c273e00e0d24b2f45727232de7fff7d97f7d7a183d4bdd7234054177467271356c222fe4c5e9efc2e9c958b0424119d0e48e0e12c09ddde0121bee1f5d781fefd810b2e30ef35d98cd03b34d7055d11a8b97574407c0b05880e66ce9c892e5dba60d6ac59f8fefbef71f8f061ac58b102fff8c73ff0e0830f22323212f9f9f9282e2ec6c891239b3c7fd4a851d8be7dbbcbfbb3d9f497e22d2911dbdad9c984bd40883fd35c052c051d90c0a3b616387edc71127a4c0c10124201e22b7ef905f8f863493e7756c6d51de2e264018e89e89ea5a5268480fb0571ac4e511105882f6108960eba75eb86afbffe1a575e7925860d1b5677ff1ffef0073cfdf4d30080c25f9713e21b37e1f8f5be929212545757ebca03d1f3a36fe964929c0c2c5b2617f410ca4fe2671c3cd8b200a10312789497cb39cb9103121a2ae74996e2f50defbc23c7e6d65bcd7dddd050b98ed101f12c6acee060ca5247a03a200cc1f22d14203af8f9e79f71c515570000fef5af7f212626066bd6acc1b3cf3e8b2e5dbae0befbeeabab8615ee20503222220200505151e15480cc9d3b171ded96f98e1e05befb6e1a80692e8d519dac9b13201515b25df7ee2ebd242196212f0f183fbef96da2a3eb73454860505626b78e1c1080cd087d85a649f8d5d5577b662599cd083d4f7ebe54826aae8043200a104d732d046bf9f2e558be7c7983fbcad409891882024407cf3cf30cf2f3f3919393836ebfcef07ffbdbdfa2b6b6168f3efa28a64d9b569727525959d9e4f967ce9c01509f4be288c58b1763f8f0e1757f4f99a2afbca45acde8dad5f1e3aa146f4e0e0508f12f348d2158c14a69a9dc3a7240009944d001f13edbb6013ffc002c5ce899d7673342cfd352052c40847f4848609d574f9d92c5d8961c9069d3a661dab4860bc0595959183162840747171c300847079b366dc2b061c3eac487e237bff90d4e9f3e8d1d3b76d4855ea9502c7b0a0b0b111313e372f815a03f07a4a0407e50bfe6c33721290968d58a7920c4ff2829918b0643b0820f3a20d6e4b5d7c4a59838d133af4f07c4f3b82240424244fc079200514d089903e23b284074505d5d8d9a9a1a87f703c0d9b36791909080ce9d3b63ebd6ad4db6dbb2650b860e1daa6b9fee0890e64e26616140af5e1420c4ff70a5042f2002e4f871e0ec59cf8f897887961c902e5de880789bd3a781e5cb813bee907c0d4f4007c4f3b8224080c07396d5f9823920be83024407c3870f47565616721bb5125fbe7c394243433178f06000c0942953b066cd1a1cb15bba494f4f476e6e2e6eb8e1065dfb345b80002cc54bfc135705888a57569356e2ff2807c459f9e5b8383a20dee6c30f8113274480788ac444294070e284e7f611ecb4d4055d1113a3bf279995a103e27b284074f0f0c30f23242404a3478fc69ffffc67fcbffff7ff70e5955762d5aa5598397326bafe9a78f1f8e38fa34d9b3618376e1c962c5982850b17e2861b6ec0e0c1837187ceb3756cac849dfc9a3ed222ae081096e2f51cb5b5c0a38f4ab526622e7979404444cb178ce868b9651856e0505a2a49b2cea257bb74916daaaabc3bae60e6f5d7a52044af5e9edb877d3342623e2df50db327501d10556298781f0a101d0c1e3c181b366cc0b061c3b068d122cc9b370f070e1cc073cf3d87575f7db56ebbc4c4446cdcb811bd7bf7c6638f3d86175f7c1193274fc6e79f7fae2bff03d05f7fdb95d58ce464e0c0015eac3d416e2ef0c20bc09a35be1e49e0919707f4e8d172af8140acd812ec949539cfff00ea45a95ad5249e252707c8c830b7f3b923d88cd0b39495c9e266300a90e26209e9d439252326c22a583a39efbcf3f0e9a79fb6b8dd800103b06edd3ac3fb5393a963c75a1616353552b6d71507a4a606d8bf5fbad712f3f8f65bb93d7cd8b7e308445ca98005d00109449c75415774e922b73fffec5a380931c61b6f8820bcf65acfee475dcbe8807806579a102a024d80b009a1efa10362719403e24aec655191080b570408c0302c4f909929b71420e6430112bc9496bae6803011ddf39c3d2bcd6c6fb90568a6a2bc2984874b92301d10cf10ec028409e8be8502c4e2e81120ae9e4ce2e381a8280a104f4001e2395c1520e1e1f2fd0ea48b65b05356d6bc03a2040813d13dcf7fff2b4ebba7c3af142cc5eb3994b06bae0bba22264616026a6b3d3b266fe14a1342e25928402c4ebb7612a368a600b1d99888ee092a2aa429576c2c70e890af47635d0e1ed49fa47fea94080a570408c05e2081464b0e4844847473a603e2795e7f1d183e1cd05951de6d588ad773141488b0080f6f79dbd858111f81d2049c0e88efa100b138369bfcf05d59cd2d28908641aea87a96e2359fac2c094fb8f65ab9603a68194300cc9d2b9f91a6b9fe1c574bf02a2840028b961c1080cd08bd416121b076adf7dc0f800e882771b502161078c53de880f81e0a103fc0d55e20050540d7aeae3585a203623e9999b2127bd555f5050148538a8a801d3b44b0b98a5e011268f1cac14e4b49e8804c26e880789665cbc4919f3edd7bfba403e239825580681a1d102b4001e207b8da0048cfc924395956b3cacb8d8d8dd49399098c1801f4ec297f330fc431cac27ffd75d79f939727c2dad50a477440028b96caf00274403c8da649f5abebaf6ff958984962a2ac56bbda0b8bb88eab4d0881c01220e5e5d286800e886fa100f103f438207a04084017c44c323381f3cf07ba7797bf29401ca39acabdfbaee4cdb8425e9e5c285bb958389c0e48e0505929df135742b0e880788eafbe923e47de0cbf02ea27c82ac7919847b03a20ea3c4101e25b2840fc003d02c4d5d58cbe7de59602c41c8e1e9549726aaaac0e4645518038a3ac0c983913387e1c58b9d2b5e7b85a014b41072470508e594babee717174403cc9ebaf03bd7b0363c77a77bf6c46e8196a6b250ac255011248d50555c3528660f9160a103fc0130e48c78e72c1a6003107557e3735550a0774efce4a588e387346fe8d1a055c7289eb61581420c14b69a9dcbae28014177bb64c6865a58458ae5fefb97d5891aa2ae0830f803bee90f39b37510284e7537339764c8aa6b83a670002c759a603620d2840fc0057aa605555c98f4acfc98495b0cc2333530a00a8f0ab1e3de8803842ad6677ea24a11c1b3600fbf6b5fc3cbd02242606387102a8ae766b98c442e87140ce9ead172c9e203b5b4a486fdae4b97d5891bc3c0983bbe002efefbb5d3b1197bc56998b9e26840a57f351ad4e519108691556467c0305881f101b0b9c3e2dff9ca12a2ee93999b01296796466d6bb1f8008110a90a6a8c961c78ec0942940870e92d8da1c555572b1d4eb80d8ef8ff82f7a1c10c0b361583b77ca6db09d37f7ef975b5560c3dba4a488f823e6a142da82d101292e96f7e24ac550e2392840fc005792bfdc59cd5002444f3f06d2949a1a60eb5611200a0a10c7d84f262323a59ce7d2a5b272ed8c2347e43bea8e00611896ffa3c701013c9b88ae04c8debd9edb8715397040266bcae1f536030600bb77fb66df814a41812c9829e1ee0a8122405882d71a5080f801b1b172db9cf5e9ae0039718295638cb2678f94f56b2c407efe5956ef493d8d279377de298990ebd6397f8ede1e204060556c09764a4ba5fa595454f3db79db0109a6859b0307e49ce66a153ab3494991cfbcb9850aa28f8202f9cde839a6812240d884d01a5080f801ae0a90b0307d318daa14af9ed5bcddbb81fff99fe0baf8b64466a6ac248d1a557f5ff7eef21979b3724b6d2df0f0c33259b02a8dc369860f07860e6d3e195d09901e3d5cdf0f1d90c041f5006929f9b97d7ba0756bcf3b202929c1b77073e080efc2af00f9ccababeb43c18871f414ad51048a00292aa200b10214207e80ab02a45b377d154a7af796ed5d8d673e7b16b8e516e09557a41e3c11befd1638f75c499654a850056f566ec9cd055e7c51fa6b5895b23299244644d4df376b16b0668df395ebbc3cb9584446babe1f0a90c0c1952ee8407d3889a71c9092125950983245fe0ea63c102b08108061586612cc02a4b8982158568002c40f888a921adc2de580e83d998487034949ae5f485f7a09f8fe7bf9ffb7dfeadb5720a312d0edf1453342754cac7c6cd464d25e28df7cb3c497bff596e3e7e8ad800588c869db36302e96c14e69a9eb9db7e3e23ce74ca8f0abdffe56dfc24d20e06b01121f2f052b98886e1e7afa86296263a58c7a730571fc013a20d68002c40fb0d95aee05e2cec90470bd146f4e0eb06001306f9e3c47f5bd08764e9e0476ed6a2a40a2a26415de9b02441d93cc4ceb86c8a9701a7b3a759255e5d75e733c6e770408c05e20814259996b0e08e0590764e74e09731d3c58be8fc12240cacb45c8fb5280d86cac846536ee3a20807f2fec681a1d10ab4001e227b4547fdb9d9309e05a29deda5ae0aebbe4f59f7e1a38ff7c0a10c5b66df2f934162080f72b616566ca4a6171b1f42ab022cec26966cd92efe1d75f377dcc5d011228e102c18e1e07a44b17cf3a202929224282a984b9ca29f3a50001e4b3670896399c3d2b423d1805485999bc7f3a20be8702c44f68c901c9cf775f80ecdb27a5649df1af7f01191972dba68d4cb6bfff5e1a53053b9999e2769c7b6ed3c7bc29402a2a801f7e00eebdb77e5c56c49103024857f49e3d9b26a3d7d6ca6748072478d1e380c4c579d601193448fe9f9cec9b52bcdf7c232130dec42a0264c000a938e8c94ef7c1c2cf3f8b13108c02442d50d001f13d14207e427302e4f469b948bb2b40aaabeb2b0d35e6c811e09147a45ceaf8f1725f6aaaac206cdfae7f7f814666263072a4e38646ddbb7b2f093d2b4b8ec9555701bd7a595780387340424280993381f7df970a438aa347a594310548f0e26a123ae0390744d324d45209907efd5a5eb8319beddb818b2e02962df3de3e011120111140d7aededd6f6352528053a7e49a448ce14e13422030044871b1dcd201f13d14207e427302a4b0506edd152080e3d53c4d0366cf9615fe458beaef1f34482e48569de47a134709e80a6f3a209999724c060d92f158f5d838734000e0f6db657577c58afafbdce901a260085660d0dc77a631717132493d75cadc31e4e5492e84bd03d2dcc28d2778f659b9ddbcd97bfb04ea13d0f55458f404ac84651eeef40d03a4d475ab56fe7d5e550b141420be8702c44f888d75fea377f76402c824393cdc713cf3fbef03fff90ff0f7bf379c008485012346587792eb2d8e1c9195a4f3cf77fc788f1eb27a6bf664c811ca89090b1301929565cd2688cdad6627260293264932bac28800a103e2ffd4d6ea4f4207cc0fc35215b0060f965bb570e3ad3c901f7f0456ae941c2f6f9f777d5d014b71ce39528a9b89e8c629281021a14afcbb8acd26e7557f1620c5c512b1e0ea3985780e0a103f4139208eaa04191120212140dfbe4d2fa4bffc023cf00070fdf5c0b5d7367d9e9557d9bd857affcd392080775c107b27e6fcf381cacafa92c956a2a5d5ec59b3802d5b24dc051001d2bebdeb2be0f6c4c45080f83be5e572ced3e38000e68761eddc29635095069b5bb8f1040b178a407fe619c983500d3dbd8155044868a884be518018a7a040c46c881b33c0960ae2589da222994fb9f3de89b9f010f809cdd5df2e2890e4f0f6eddd7b6d47a578e7cd939c82bffdcdf1735253a5d292a7123efd81cc4c991438137ede1220478fca445d0990a143a50f86d504626d2d70fc78f32b4f93274b72a04a4677b70216202b75e5e5d67482886ba889b6151c904183eac3904243813e7dbc2340f6ed03962f071e7d14183d5aeedbbad5f3fb0544fc59458000ac846516ee56cd04fc3fb4952578ad0305889fa092bf1cad3cb8d305dd9ec62525d7ad03fefd6fe0e5979d271eaac9aed526b9dea4b9fc0f40564b6d36cf0b90c64e4c78b88810338e4d5a9a4c3eaaab8dbfd6f1e32daf66b76e0dcc9821dfbfca4ae30204706fb5383d5d92f9295e1c5355254d4cd7acf1ec7ecacae4d655072426467e739e704054fe87c25ba5789f7f5e264cb366895bdda993f7cebbc78e4908a95504c88001e28058b5cf91995454c86f2c3dddfcd776b76f18e0ff02844d08ad0305889fa062359d0910774f26805c480f1d92135e793970f7ddc08409c06db7397f4e8f1eb2da18ac02e4ec59e0bbef9a1720ad5bcb67e4e94a589999221495e302981722f7de7be2749971c15193c99656b367cd92fdad5e6d4c8018a9d8b271a3acfceedfefdebe039dc387e5d82c5eecd9fde87540545cbb990e4865a5843d3912209e2ec57be89054bd9a3f5ff21f6c36e0bcf3bc77de55df7fab0890941409ab54958c0299cc4cf98d39ea8d64946076408a8ae88058050a103fa12501e2eec904a84fa8dcb70f78e209d9c7fffd5ff38e8acd16dc0d097ffc51c2e19a132080772a612927c6fe78a5a602b9b9c67220340df8ec33f9bf19171c5727932929c085174a32ba190e883b9f818a33f745af077f401507484fafef13e109f43a2080ac6e9ae980ecd923e5761b0b907efdea176e3cc50b2f001d3a00f7dc537f9f5a5cf0860b60951e208a60aa84959121b79e70d98259801417d301b10a14207e8212208e7ef8ee3621542801b27429b06489947b74e582939a2ab1c8c1d8182a3353e2c0478c687ebb1e3d3c2b406a6ae418341642eaef2d5bdc7fed5dbbea0b1c98e980b832999c354bc4cfc993be11206a82132cddaef5a20448bb76c09b6f7a6e3f4ab4ea11205dba98eb80a80a58030736bcdf7ee1c61314168a089f370f68dbb6fefed4545924f2a4f0531c38209fbd3b45203c419f3ee272054322ba1220662f825456caf9dcdd3943731539fd01866059070a103fa14d1bb1e01b3b209a66dc0189899155e9975f167bff81075c7b5e6aaa348ddbb3c7fd7dfb2b99993221898a6a7e3b4f3b207bf648d85c6301d2bbb71c57230e555a5a7d83456f3a200070e38df5932ea30244efd8cf9e15f708a00071465e9e84fd4d9b2602c4530df9cacae47bd0aa95ebcf31bb19e1ce9db290d0a143c3fb3d5d8af7a597a4b7cffdf737bcffbcf3e4d61beeb39512d001096bedd327f00548559574bdefda55be5f66ba5d46aa6602725d292b93f3a4bf515b2b7328866059030a103fc25133c2f27249123422406c36b9988685c98a9ba3aede8e1839529e1b8c61589999cefb7fd8a30488a7c2253233e5188c1ad5f07e3362c5d3d280f1e3e5ff663a20ae546b6bdb16983a55feefae00090b93157abd0ec84f3f49d2bdbaf893a6a8d0b83bef947e382a54cf6cf4744157c4c599ef80340ebf02e47cdcb1a367be23c78e01afbe2a8b418d854f6cac2c3004a3000182a31256569684f6dd71872cf29929a8cd102080774b419b45498988103a20d68002c48f70547fdbe8c94431772ef0cf7f360d33688ef6eda52a49b009901327e402d852fe072002e4d429cf9dac33338173cf958976638cc48a9f3e0d7cf51570e59532c932cb01e9d0c17581fbd863927cab4aabba833bbd40d4e4e6ea41931b800000200049444154ab29409ca104c8c8913239576593cd464f177485271c104702442ddc78e23bb278b1bcfe9c398e1ff756fe9d150588aa8415c8646488bb7ed34df2b799df31b304883f8661a9e2057440ac0105881fe1c801314b804c9d0adc7ebbfee7a5a602df7e6b6cdffec6d6ad32a9775580009e0bc3faf65be7e3484d95c9b73b31ea1919122b3c71a27949877a2793bd7b038b16b95f5e1a70af6b6f76b68c73cc18e9b172e284fbfb0f549400b1d9245f67f56acf542672d701f9e517734a4797968ac3a33aa037c61302a4ac4cfa2fdd7baff34ed5a9a9b24a5e5969eebeeda9a991247bab09909414b9ee1d3feeeb91788e8c0ce0a28ba4d081cd66be008988703fafc79f05885a98a003620d2840fc88e604487cbcf7c703c88570e74e59e50f163233c5fde9dfbfe56d7bf4905b4f089093272551dc990031122b9e96264d16fbf7372fe9d09dc9a451a2a3f53b20d9d9b2cadaaf9ffc4d17a421b5b5f27d56a171b7dc2293a47fffdbfc7d9596bae78000e608a25dbbe4d6910302c877c4ec24e1254b44583cf490f36d5253254fe0fbefcdddb73df9f922e2ac284080c075416a6a804d9b64012422427e67660b10237dc3fc5980d001b11614207e84a38960418184b5b4940ced2952536542b26d9b6ff6ef0b323325e722c4855f4f972e9240eb0901b26d9b7cf6ce044874b4acd0ba2b40264e948b94af1c10337067ecbb77cb24a76f5ff99b02a421858532315502242606f8ed6f250ccbec5ca7b232f71c10c09c30ac9d3b25974889d1c62427cbf7cbacc9d8c993c02baf0077dde5bc092c000c192209d99e0cc3b25a095e45fffe725e0a5401b273a7b83b63c6c8df66f79b315ab4c6dde21e56a0a848aec756a9ea16ec5080f811ce1c10234d088d72eeb952a12b58f24034ade50ee8f68486caf1f18400c9cc14e179eeb9ceb771a721e1e1c372719f3851fe76947be40efee080d4d64a65b1941411f65dba5080344695e0b52f0e306b960837b3c3318d38206624a2efdc2913deb030c78fab4a58aa6a9a51fef10f292cf2f0c3cd6f171e0e0c1be61d019294e4b97db8439b36f2dd0b5401929121c7571516313bcccfe89c212c4c2200fc558074ee6c2cac97980705881fa10488fd2aa3d1d50ca3b46a2527ca601120870ec9c4c655010278ae146f66a624013797d49d9a0aecd8019c39e3faeba6a589bb73d965f2b73f3b207a05c8e1c392803f6080fceda924637fc69100b9ec32f9dbec64745f3b203ffce03cfc0a9092b08039df918a0ae0c51781db6eab0fdd6c0e771617f470e080b83091919edb87bb047225ac8c0c39b61111f277bf7e92c76756a96b33e60c662d4a791b3621b41614207e444c8cc4fd9e3c597f9fd1268466e0e90ba19550ef53af003974c8336369691ca9a9122eb36387ebaffbd967923fa2267e6609105f38207ac7ae26352ace9c02a42979792224edcb29878448c9d0152b1a9e9f8ce2ce77263252aac2197540344d72409a13206ddbca6ab219df91d75f9709d2638fb9b67d6aaa4c4c3db5126dc50a588a40ad84a569224054f81520e7a0eaea7ae16f14b30488bf3a201420d68102c48f501551ec571e7ced800072213c72a43e213e90c9cc9490043da5613de180e4e7cbbf967a910c1e2c76beab02b1a606f8e28bfaf02ba0be94add1f87e5f3920a74eb95e2d283b5b423cd40ab412209eeae3e28fa80a588db9e30ef9acdf7fdf9cfd9c3923ffdcf9cec4c51977400e1d920a68cd0910c01c915a5505fce52fc0f4e952fdcd15d4e2c3962dc6f6ed8c0307805ebd3cf3da46494991f15554f87a24e6b277af88d0c602043047e49e3c29dfe9601520c5c54c40b71214207e44630162461774335017c26070419a2b7beb8c1e3d44a0d5d69a370e579d98d6ad81e1c35d8fcddfba55569d1b0b909a1ae3652f7de580a87dbb4276b6c4fcab0203fdfa494cbe998dedfc1d6702a4470f60c204f3c2b054e34a77be335dba183f663b77caad3704c85b6fc982c2ef7feffa737af5926b82a7cebb5676405252e4fa677605325f93912121b5175c507f5ff7eeb28864860031ab6cbfbf0a103a20d682024407b7df7e3b4242429cfe2b2c2cacdb363b3b1b93264d42bb76ed10131383193366e098c1a0492540d40fbfa44456ce7c2d401212e45fa0f703a9ae96dafb7a0548f7eef25c339ba37dfbad94c975e5d8eb09914b4b931567fbceea66945daca81017c2170e08e0fad855052c855a7d0cb4898e119c09104092d1bff9c69cf0182540dcf9ce98d18c70e74e2944a07af938a35f3f991cbabbc070f62cb0702130654a7dee912bd86c122ae9090172e68c4c56ad2c4080c00bc3cac800468c90d03e4568a8e41a518018870e88b5a000d1c13df7dc83b7df7ebbc1bfb7de7a0b6ddab4c1b9e79e8bf85f9b711c39720463c68cc1fefdfbb170e142cc9f3f1f6bd7aec5840913506da03b969a082a1d63d6c9c40cbc9107f2c51712fea427a1ba2566cf968bfe7befb53c81f8e107d9b73b020430370c4b4f25aed45459cd74a52f425a1a70e9a5525c4061860031b29a6d0425405c4944d73499d0d80b905ebdc40d31e3e27fdf7dce3b5bfb0b9ad6bc00b9e61af9be98e18228d7ca9def4c5c9c390ec8c0812d57cc494e16819d9fefde7e56ad02f6ef079e7842ff73d579d7ec10c1bc3c794dab0a904e9d24413e900488a6011b37360cbf5298558af7c811b9353a6730ab379437a9a99131d301b10e14203a38fffcf3317dfaf406ff92929270faf469dc7cf3cd75db3df7dc73a8a8a8c0faf5eb71fffdf7e3f7bfff3dde7fff7d7cfffdf758ba74a9dbfb8f8c94b2ab561520df7d675ea50e477cf6995c18b76f37ef3557ad92c9e9b469c0d0a1f2b7b38b7966a64ccc870dd3b70f2540cc4a443f7b563e6b3d02046859209696ca36f6e157803902444d267dd10704704d801415c938ed57a1c3c345f49a2140d6ae95e3e6cf9494489e873301121e0edc7aab8414555519db975107c40c01e2ac03ba3d4663f4d7ac9130afa143f53ff7fcf3e53b6b56196085557b80d8136895b0f2f24420381320669c837ef8414225ed1d1677500e883fe5c6a9f1d201b10e14200679f7dd7761b3d9307dfaf4bafb56ae5c89c99327233131b1eebe4b2fbd14c9c9c978df6086a67df93b5f7741b727355526263ffee8b97d28e16196d3a212e75f7d55c246e2e2a4a1da79e78913d0f8e49a99290dc0f496a58c8991928a6639203ffe28a5625d15204949f2de5afadcd6af1717c81302c4570e88da9f2b636f5c014b61c6c5bfa44426186686e1f9024725781b336b96b86d6bd618db975107a4a8c8fd09525595f4836929ff0390df57ab56ee7d47344d16562ebf5cff7301395701e6bbcf070e48e88fdd25cc72045a25ac8c0c71db2ebeb8e963fdfac90296d1a4fbac2cc909344a4c8c84159b59f1ced3a8732f1d10eb40016280eaea6abcfffefbb8e8a28bd0e3d7b239f9f9f9282e2ec6c891239b6c3f6ad4286c37b87c6fdf8cb0a040d47cebd6865ed214468e9450154f8561699a9c3c01f3f6619fc87dc10512e2b57ebd7c9e9326c94ad4c68d0db7d71b7e05c845c5cc4a58999932391831c2f5fdbb122297962609d88d7b10b4692302ca0c07c4db02a4552b2917eb8a03929d2ddb37ae42648600513f7b7f4f667745800c1c2813e3d75e33b6afb232391e6ddae87f6e972ee214ba5a7ca0317bf7caf35d1120616112aae7ce7764d72e398f3716fdaed2b1a34c4e3d21407af468188a69355252c4f93110d56c293232e4fbe6e81ca95cb67dfbdc7f7d4d93f3905e07df11662c4a791b0a10eb41016280b4b4349494943408bf5289e8f10e6c89f8f87894949418ca03692c40ac107e054868d8a0419e1320870fcb243239d95c01d238917bdc3860d326e0bfff1597e1924ba4b24f5a9a4c4adc1120805ccccd14200307ca67ee2aa9a952aed3599e8ba6c97b743611329a7468249cc628ae8e3d3b5bbe5f8dbb5e2727033ffd241352775102a4bcdcbf4b87e6e58903d85218c3ac59f27d5231e7eea0aaa6b9d3b5d868334255016be040d7b67757a4a6a5c9e7397ab4fee72a3c917f67e50a588a9414111f3ffde4eb919843e3fe1ff698518af7d021b9869ae58000fe2540540e2443b0ac03058801de7df75db46edd1a37de7863dd7d15bfce2ec2c3c39b6c1ff16b6bd38a66662073e7cec5d5575fdde0dff2e5cbeb1eb74ffeb24213427b3c9988aedc8f7bee918ba319a12c99998efb68d86cc0155748bcfeca954061a1382240cb7d379c61b603a2771ca9a95246d75922e3debd7281f29400292d95fc005f745576b51b7ae30a588a7efd64a273f0a0fb63c8caaaef58efcf6158797922a65b120553a78a6b6620e5cd50df18d5a7c75dc7e9871fe437ebeafe55252cbda4a50163c7d677bd7687d454e0fbefcd2dcee10f0244e56a0542185661a1b839ce04486cac7c178d0810b50812ac02a4a848ae41eddae97bdef2e5cb9bccc9e6ce9deb9941061914206e72f2e449ac5ab50a13274e44273bcf34f2d71956a583ce67677ebd424436330b5bbc783156af5edde0dfb469d3ea1eb7aa0302c885f0c71f6595d76cb2b26455f3da6be56fa342c795446e9b0db8ee3ab9b8bff30ef0f0c340dfbeeeedcf2c0172e2844c94f53a31a346c9fb71f6b9a5a549e8d9d8b18e1f375af5c4174d0815aa91624b34ae80a53063f571fbf6fadafefe1c86d55c052c7bdab7076ebc1178e30df7cbd31ae91b638603e24af89522395926ed7a12ef4f9f06befacafdf02b456aaa0864338b73f88300e9d245ce29812040befa4a6e9d3961369bf15050750d352367d41f05882ac1abd7519d366d5a9339d9e2c58b3d33c8208302c44d3ef9e4135454543408bf02ea43afec7b82280a0b0b11131383b0c6311e3ab0ba00d134696667362a76f59c73e4c2635480ecdae57a227768a874287ee105f7c2410011200505c6e395b76e95cf58af00e9d041f23b9a1320a3473b8fb737c301f176fe87223abae5b19795c92aa4a33e0c8989b242edeec5ffe4497198aeb842fef67707c41501024818d68103c0860deeedabb4d47dd1dab1a384d2b92bf6dc11203535524ed7553232a4378e51013278b07c3fcd729f4f9c10c16e750162b3054e25ac8c0cf90e75edea7c1ba3a5785502babbd7307ba2a264c1ca9f04089b105a0f0a103779e79d77d0ae5d3b5c7df5d50dee4f484840e7ce9db1d5c12c7ccb962d18ea4ead453b9400a9a9018e1eb59600e9df5fec4d4f8461d99f3ccd08f5d29bc86d94eeddeb3bd71b2133535697fbf7d7ff5c679f5b65a54c129b9b08d9575f73075f3a20ae8460a95554470e484888385fee0a90efbf9763af2a1d0583030200175d24a149ee26a39795b92f5a6db6fa4a58eeecf7f061fd0204d0f71d494b93f3823bbf657bc2c2e4dc685623587f28c1ab08944a58cde57f28dc0df3539895800ec8efcbe835c1dbb009a1f5a0007183e2e2627cf1c517b8f6da6bebf23aec9932650ad6ac598323761998e9e9e9c8cdcdc50d37dc6068df3131123eb46f9f88102b0990d05009f5315b80fcfcb34cdc55ec6a4b09d5ae909929130c772aecb88359cd083333e5330e71e3979b9a2ab1eda74f37bc7fd326498c6e4980f8ab03e24a085676b65c54fbf573fcb891f087eddb65923878b08cc55f1d9053a7e43be0aa00b1d9809933818f3e72af1a9511070470bf17c8ae5d72ab4780c4c7cbaab05e0172f9e5e6ac489b997fe74f02242545ca251bb916f89a921271dc5a1220c9c9f2fb73e73cdcf81a6a06fed60d9d0e88f5a0007183152b56a0a6a6a649f895e2f1c71f479b366d306edc382c59b2040b172ec40d37dc80c18307e38e3bee30b4efd858b9fde107b9b59200013cd39957c536abd59bd4540913306247bb5b52d75dcc10209a666cdca9a9225a5542bf222d4d2650cd4db8cca882e54b07a4a5b167674b3f0767e95946044856967cb6ad5b9bd320cf57b85282b7313366c882c93befe8df9f11070490cfda1db1b773a7949fd5e34ce88dd13f7c58be7346c3af14a9a95224c10c717be080fc0e5422bf954949910515b30a7cf8824d9be4b6a54a68ca6573a7e964e36ba819508010a35080b8c1bbefbe8b2e5dbae0b2cb2e73f878626222366edc88debd7be3b1c71ec38b2fbe88c99327e3f3cf3f3794ff01d40b105526d28a02e4e851732f08595992c3d0ab97fcdd5242754b9c3821177f6f0a90f6ede53d18f95c0e1d92c9abbbe31e344826168d3f375756626362e442ef6ea51d5fe780b434f6ddbb1de77f28faf5936377ea94fefd6fdf5ebff2e86e58901570478074ed2a93ec8f3fd6bf3fa3df99b838f7c4dece9d223ef4f657d22340d2d2c4c5747209d18daa8a67860b72e0808871339c194fa37eb3fe9c079291210b542dfdaefaf4915b7716421a5f43cdc0df040843b0ac0705881b7cf3cd37282c2c84ad9933f4800103b06edd3a9c3c7912bffcf20bde7aeb2d7436e1db6fef808484586f954a4d8ecd0cc3dabe1d183ab4fe82d8bebdac7cb9bb0f7713b98dd2bdbb880877b16f9ce80ead5a49c348fbcfadb050be4b2dadc41aad7a62349cc6086aeccd856139ab80a570b7115865a584f4a895477f77404243f52f7a5c70814c80f4b8a2b5b55236da1721587a13d0157a62f4d3d2a459a359a2bc470f738a7300fe51014bd1a38784d1fa731e88caff6849f0b56d0b2424b82f40860d3357541aad8ce84daaabe51a4407c45a5080f8196a32f5c30fb2baa87a0b5885ae5d6525c74c01a212d0ed3112f36c2491db08464bf16666cacaa411d1999ada3059f5b3cfe4a2346142f3cf332a408c86d318213a5a6e9d0990d3a7257cc51501a2f7e2bf6b978420058a039298a8bf3bf6b06172fcf5f451397142048b510744ef67ad69ee0b90e46411f4274e34bfddd9b3c0175f98177e0598579c03100162e64ab927090911e1e7af02a4bc5cae6f2de57f28dc0d053533015de14f0e884a96a703622d2840fc0cd548e7c001eb855f29cc4c882c2b93d2968e0488a3846a57c8cc94d5477712b98d60860031eadaa4a6ca185495e8cf3e934a60ca59738611015253637c35db082d39207bf7cac4b3b910ac981811327a2ffedbb7cbf76cf060f9dbdf1d103de1570af5dbd5d3a7a2ac4c6e8d3a20274fea3b471c3922df55770508d0728cfe77dfc9fb33538000e614e7d034ff724000f9ddfa6b08d6e6cd727ed42340f4e63e3abb861ac59f04885a88a003622d2840fc1035a1b2b200f9ee3be33d2f0060c70eb96dbc7aa312aab76dd3f77a4613b98d6044805457cb7b35438000f219d4d68a0051e5619bc38800512bc2be76409c8dbdb912bcf6b8b3fa9895254e9baab6161727ab7167cfea7b1d2be0ae00898f1731d0b8f84173a8aa59461d10409f0ba28a7bb823405493d296be23696922ac468dd2bf8fe630a33847519108367f12202929f21b36b3f089b7c8c890557967d5f71ad3af9f085c3d22d3d935d4283131e2e0e869bee92b8a8be5960e88b5a000f143d46ab59505c89933f589f246c8ca92c4e9c627e881036552a7d769319ac86d841e3d64f25951a1ffb93ffc209fa9d1712726ca8430335356a48f1d736d25b6634759c9774780a8c9a4af1c10b55f670e4876b67c261d3a34ff3aee0810fb04744026e29ae63f2b87f6b82b4000f90c7ce18000fa1ca79d3b253cb3470ffdfbebd851448f2b02e4b2cbf487b2b584d1e21c807f95e055a4a4c839c61f431b5dcdff502427cbf5233fdff57d38bb861ac595dc3aaba0ce017440ac0505881f627501327cb85c5ccd08c3dabe5dc2571a5fac1d2554bb82ca7ff09503024898875e3233e53d1b5dc5b28f154f4b9370be0b2e68f9792121b21aedcec4594d267de580b46a2593436717ca962a6029faf5ab0fd772859a1a6942687fccd405d0dfc2b0aaaaa48f801101e20f0ec8ce9db2b8e16eb26e4b22b5b4547e7baeb88e7a51c5398c3424f44701e2af95b0ce9c91ef82abe157807bb9685959c09021e60b5ea37981dee4a79fe47c1015e5eb91107b2840fc10ab0b90c848110d6608104709e80a77724d5422b72f5642940071a7125666a65c449cf5a9d0436aaa5402fbf45360fc786992e70aeec6fc9a3199344a73bd405aaa80a5484e96f7e2ea67b077afac5636764000ff5bad3d72448497bb0264d83029cfad728f5a4289d6965ca9e650e1167a1d1077c2af142d55c24a4f97f019b3f33f1446f3ef0e1c90dfa991cfdddbf4ee2d936b7f4b44dfb24584bd1e01929424ef558f00f144023ae05f0264efde7af146ac0305881f627501029893887efab474b96d4e80d82754bb82aff23f00097f02dccb033173dca9a9929cbb6993be8990bb6517cd08a7314a74b46307a4ba5a62aa5d152080eb177fb5e23f7468fd7dfeea80b8d303c41ebd89e8a5a5e2ce1959b56dd54a5fe7f9ea6a39df181120ca0171e692a5a5494e903b215eae909a2a22ca9de21c80ff25a003b280d2b7afff09908c0c117a7abe6f616152a1ccd573504bd75023f89300c9c9a100b12214207e88bf08903d7bea279feef0c30fb25ae86cf5466fcf91ea6a9914fa4a804444c8aaac5e01525a2a2b38668d7be4c8fa10133d02c4880362b3f97655d5d9d8f7ed9384705742b0f43602cbca92c982bdf08a8a927ffee6802801e2eec43929493e0757c3b0cacafe7f7b771e1f5579ee01fc3703210909eb6411080844130942836c06051144c146c484e5436bf1bad05e1704ac5bd54b5b45d40bb6b8f416515cda8bf40211172cc82288562168524a4920618b068210482060424272ee1f8f27ebcce49c3333e79c197edfcf279f819993e1256732739ef7799fe7f54fc0aaa7ebd8be7df21ee16b0072e68cfbf3ab281280042afb01186fcea10ac6000408ce4e58dbb601d75eabbf95be9e4e58ad7d86faa24b17795fb77b00a228f29eedef1a18f29d9f57059219d499871e3dac1d8737eacebcd9d9c6d73be7e4c82ce69557ba7f3c214182b01d3b8049935a7f3eb5905b1d9b158c74c2cace965b7f8dbb4307f9995656eaebf7ef724950a95779b9ac4f37bbed71635dbbbacf9469ed800548d3839e3db50720cd0bd055c1d88ab7a848c61d1161ecfb1d0eb908d29301f1c792bdf878e9c877ea544337344fd4a619be0620805c2036dfaf67df3ef9dd0f6400d2b839c7c891fabfffd0212023c3ffe30ab47efd8065cbac1e85763535c0975f02f3e6e9ffdee464e0fdf7b51ddbda67a82fdab4914902758f8dd6e4e7cbfff7fcf9d68f0d0b035e78a161d2c717c78fcba4003320f6c30c48109a300178fcf18640c48e2ebf5c36255cb7cef873e4e602fdfbcbde279e34df58cf9b1d3be48d2d10b3415af5eaa53f0059b54a96bea86d3efde1c92781679ed1f73dbe6440acacff0064ecee9660e5e7cbd8b4d60469ed84a5289ed75e07e36684be74c052e92944f75706e49e7ba40d699f3ec0d34f7bdf2470f76e99d4f0e5b59a9828c196bbd7c8279fc87bd975d7197ffed6186dce0148e6e4db6f833303d2af9f4c30f8927137536e2e70ee9cbefa0f555292048a5adadfe6e64af0e1ed33d4175a3f132e5c007efe73edafcbb56b810f3ef06d6c2af577910188fd300312842ebd1478ee39ab47e19dd309dc761bf0de7bc01ffe60acab8cb70274d5f0e1c0fcf9f2e1d95a2a5b2de4363a8beb0f3d7b4a21aa561515c0dffe063cf288f1ce3cee4c9ba6ff7b8c0620feba98f485a72274b50396d69f6d72b22c9d68cda143b2a15d2865407c0d40060d025e7c515b36c25f41ebcf7e068c1d2bb3a90b16002fbd043cf61870fffd2d3be2f85a800ec8855eefde9e039091231bf6840994e1c3e53d43afe262b9500cc600445d42999fafadab9fd5b66d93d78191da8ca424595675f0a0d41379939313d80937ad9f092fbe281d0177ec9000b9358307fbafa6a7a040dedf1313fdf37ce43fcc8050c06466ca8c9a91f5c8d5d5c0bfffad2d00397b56dbfa5f2b0bd0557a9760ad5c29858477de19b83169e572c985616dadbeefb34306c45311bad60e58aaa4246d1b81a933fdcc8034507f97d58dd1bc292bf35fd01a1f2f9320070e48e0fde4937231f2ca2b4d9783f8230001dc67c9aaaa80ad5b03d37eb73923cd3980e06cc1ab4a4e968bcc602944dfb64d02a576edf47fafd66618d5d5f29a0e4401ba4a4b00525000fcee77c0430f690b3e00ffd6f4ecdb27930281ca0291710c402860aebb4e2efcb2b2f47f6f5e9ebc81b6367b336488645b5a4bedfabb90dba89e3d25ab71fab4b6e3972d03c68d0b5cd71c3d5c2e595aa47799831d32202e97d4bc34de04b2ae4e6a5af40620e7cfb71e44e6e4487d52f33a0020f832207575f2fff53500494a92595f2dcbb0cacbfd1fb4f6e801fccfffc805d18409c09c39b2acf1f5d7e522aaa8c83f0188bb56bc5f7c21afbd40d67fa8f436e750a90148efde7e1d8e29222365dcc11080d4d5019f7f6e6cf915209ba64645b51e80e4e549ad49203320ad7546acab0366ce94dfbddfff5efbf3fa73777b76c0b22f062014306ddb02b7de2a0188de37929c1c99d1fac94fbc1f171d2d6b5c5bfbb0ddb9536eed108000dab220f9f9c0575fc93a763b30da76d12e1910a06916a4a8482e0ab574c052699d7df454800e346440fcf1e16a8663c76432c0d700a44d1bf97dd652881ec8d74c9f3ec05b6fc905da35d700bffc65c352167f6540f6ef6f9a29fce413b970f4c7f3b7466dcea17743c24387648c562e51f545b074c2faf7bf25c0361a80381cda6ad1b47e86faa2b50cc8ebaf4bb667e9527d4b0ffbf5939f913f266ad801cbbe188050406566ca92953d7bf47d5f6eaebcc94647b77eac963d47b66f970b1a7f16721ba1270059b64cdee0274e0cec98b4f22500b13a03e22e00d1d3014b75e9a5d2c8c0db87bfa2785f7b1d1f2f59146f05d176e2eb1e208d692d4437236b969c0cac58216bd3afbd5666d05b5b53af455292cc3cab3f374002901b6ff46f1d9737a34649a7243dcb2583b505af4a9d35b7bbeddb256befcb64989656bcb9b9f21ad7f2196a94b700a4b81878f45199401b3346dff3fa6b77fbda5a990c6006c49e18805040dd7083b460d5bb0c4b4b01ba6af8700970ce9ef57ccc8e1dc0b061e65d0078d2bdbb7cf8b416805457037ff90bf08b5fd867edaad1002410cb69f452c7de3c00515beb6ad5b6add40f780b404a4a24c3e12d030204cf322c7f06208306c98593b7dfd5aa2af932eb35337020b0668d5c80fbe377ad712b5e405e0fbb779bb3fc4a3577aefcfbefbda7fd7b422100397cd8f8268c66c9cb93f6b29191c69fc3dd32bfe6025d800e3474176c9ecd5514e0befb64a9d8c285fa9f373151267a7c0d288b8a64328001883d3100a1800a0f07d2d3f50520b5b5322ba92700a9ab937effee288a042056eeffa16adb5682906fbff57edcdab5c08913c0dd779b332e2d8c04208a62af0c48e3b1e7e5c9458bdefd499293bdcf3e7a2b40071a7b86ac650000200049444154ea4282a510bda8483691f4c74692575d25af897ffdcbf3316a8d91d5af19a37af694f73df50271c30699f81837cebc310c1b261997f9f3b52ff50bf600242545feaf5a37e9b38adec617ee2425c9d2484f59d4da5a69f610c80274403e136a6b5bd634ae5c097cf411f0a73f19fb3d6edbd63fbbdbb305afbd3100a180cbc89019c0c2426dc717164a8f74adb337fdfa499ad9d332ac8307e5c2d3eafa0f95964e586fbc21171181d840caa8f07099d1d2138054554936c7ea0c48e7ce7211d83c0362e442a0b5f5d7b9b912f0786a1c108c19107f643f00d9d7272cccfb32acb232b9b5fa356394d329174fea6be4934fa4ad684c8cb9e378ea2909f4d6ae6dfdd8ca4ae0e8517d1b93da8dfabb6cf76558fe0a4000cf9fa9858592093223030234fd4c38791298350b983c595af11be58f9a9e7dfbe4734b4f969bccc30084026efc7849376b5d0ed0da0c72736dda0043877a2eba54039361c3b43d5fa0b516801417cb458b5d8acf1bd3bb17887a3169f56cb6ba6baf3a7645f12d00397cd8f38ebeeaf2414fcbfdba749119be60ca80f82b0069d74e826a6f85e8c19e01011a96c8d4d5011b379ad37eb7b99123a516444b16445d6617cc19904e9da488dece01484585bcf7eb697ce18e5acbe8692244ef67a851ee0290b973653f99575ef1edb9fd51d35350203f2bbd596e32074f0b055c5494b4bdd4ba0c2b37572e785adbacac31b510dddd07ed8e1db2e6d62e3bc7b71680bcfdb674a231b25960a0e90d40d48b493bcc6637de0be4d831199b910b81a424799d1d38e0fef1d6d65e3b9d9205b918332040eb85e8c19e01011ab26439394069a9b9f51f8d3df514909d0d6cdae4fdb860de03a4b1941459be6b577bf7caadaf1990ce9de53dc4530062e433d488e601c8faf5c05fff2afbee5c72896fcfddaf9fbc4fabef0746b005afbd310021536464482bdcd66a1f007d05e8aae1c3a5d8b3b8b8e56376d880b0b19e3d659cee82a5ba3ae0cd3781a953a578df6e5aebfbde9c5d32204043c12460ac0396ca5b2bde9327e535dedaeb375836235414ff0720830649d3084f19a450c8802425c9ebe0fdf7810e1dacdb9dfb861b243b3c7fbef7e30e1d92ac5c428239e30a941b6f9460cbae85e8eafb8ebfbaad79cb8004bafe03681a80545400bffa95d43add7187efcfdd78777ba3d882d7de18809029d2d365edf79a35de8f5314ef7b2878e269f3adf3e7e5f9ec1480f4ea25b511a5a52d1fdbba552e06ec547cde58b06740d4b1e7e7cbeb313151fff3c4c7cb45a5bb0f7f7569516b4b1f826533c2b232e958e5ef0c484d8de7d6dc6565726ef4ec1b60376a90fafaebd282342ccc9a71381c9205d9b64dbe3c397448de97dab4316f6c81909121f52cebd75b3d12f7f2f2e4e7ec8fd6b89e9a61a86dc0cd08402223e5abb41478f249b97ded35ff749b4c4af26d77fbca4a99046006c4be188090293a75929991d696611515c90588deb5abddba4966a17900b26b971441db2900510be2dc6583de78433e58aeb9c6dc3169e572b90f9c3cb1d3729ac64bb0f2f2e483a96d5bfdcfe37078fef0cfcd958b8bd6f69b09960c883f5bf0aa060e9465689e9661a97b8058dd32db17ea45cff1e3d62dbf52a5a7cbcffcd9673d1f13ec1db054975d26ff57bd6ddfcde28f0274959a01699e492f2a92dfa140d77fa85c2ee0e38f81575f95d798bf5e479191f25c460390fdfbe59601887d310021d36464005f7ce17de657bd2831327b73f5d52d03901d3ba4f03590bbc1eae56933c2b23229d4bfeb2efb5e7c19c9808487db6377e5e64bb07cb910f0b4fc212707484d6dbde831583220810840a2a22480f354881ec85dd0cde27235fc1fac0e409c4e999ddeb041ea41dc0995000490cf99b56b3d2ff1b392bf03908a8a96ef23be7c861ae172c9b2b761c3a4fb953ff9d2098b2d78ed8f010899e6d65be5c3f0fdf73d1f939b2b1767ddbae97ffee1c3816fbe910e1caa1d3b6426c82e9bf901406cac0445cd0390e5cba5a7fa8c19d68c4b0b3500d1bab7809d2e269b2fc10a5400a265e63198322011110dad83fdc55b21ba19bba0079ac321af91cb2eb3476bdbcc4c09fa3c6541422900c9cc94fd31366fb67a244d555549e30a5f3b60a93cd5a2f9f2196a444c8c2c317ce30dff2fe1f3a513d6be7df2d96397e633d4120310324d4c0c70dd75ded3e3beac5d1d3e5c8a0ffffdef86fbb66fb7c706848d399d52ecd93c0059b64c964bf8da3d24905c2e9959d45ae469a78b493503525626dd557c0d408e1f6fa871016436b2b050dbeb373e5e36efaaaa323e06331415c99a757f67e4aeba4a9647d6d6b67ccc4e41ab2f1e7aa8f5e26fb3b469033cf104f0e1872dbb449d3e2d3ff3500940faf797df4fbb2dc32a2c942623feca802426caef65f300c4acfa0fd5cc9952eb14883dabfaf593f7a073e7f47fafda01cbaeab09880108992c2303d8b2a5e986708d192940575d75957cd0aafb819496ca8c939dea3f54cd5bf1e6e4c8ceb5762d3e57e9dd0ddd4e17935dbbca05bf3af3eecb4ca4bb8dc076ed92cc90d60c0860ff2c88bf3b60a9060d9222517775346565f6095a7d3175aabd5a694f9f2e41c682054def0f9516bc2a87433e673ef8a06936dc6abe74de73273c1ce8dddbfa0064da34ff74bd72c797ddedd901cbfe188090a96ebb4d3e143efaa8e5632525f265b478ae7d7b294054eb40d4f5ce760c407af56a5a84be6c99a4ccc78fb76e4c5a180940ec7231a9f6c4ffe28b86253246b9db082c375796d669096ce2e3e5f6620e4000f7cbb0cacbed13b48692b030e0f1c78155ab1af6a300422f00016419d6c993de3b7f992d2f4f261efcb924a8f952d09212c9ee9a55801e686abb6223cbb0b80788fd3100215375ef0e8c18e13e3dae16a5fa327ba36e4808c86d4c8c3d3f581b67402a2ba5fee33ffec358572633e90d40ec7431a98efd8b2fe435111969fcb93a769480b1f1cc5c4e8e04c05a5aaeaa1910bb17a2072a00e9dc59ce81bb42743b65cd42cd1d77c87bf073cf35dc77e8904cdef8bbcec74a8307cb248f9d9661f9b3005dd5bc1b9f3f3e43eda4532779bdea0d404e9e942f0620f6c600844c9791211d592a2a9ade9f9b2b1726bd7b1b7feee1c36576eff4e9860d08edb806b4674fe0e85159039f9525e3bdeb2eab47d5ba50c8806cdfee9f42d0e6b38fb9b9da671e6363e5d6ce199073e7641963200210c07321ba9dea86424d7838f0e8a332e171f0a0dc77e890bce7daf17dd2287519d69a355277610781084092926499b1bad4cc1f9fa17663a41396ba34960188bd310021d365644821f3dfffdef47eb583902f1f84c387cb9ad1ec6cf9b2e3f22b400290da5a49992f5b068c1e2d1d73ecae6347c9d2046306440d40ce9ef5cf8540e300a4aa4a36d6d33af3d8ae9dfc5cec9c01519708063200c9cd6dda51adae4e8271bbbc6642d13df7c844c20b2fc8df43a90356639999f2feaad6045ae9c205c954f8ab03962a294936f554db65fbe333d46e8c74c252b342c1f0997a31630042a6ebd3472e3ede7bafe9fdbe14a0ab9293256dbb7cb9ccbedb39000164e7f3ad5bed5f7cae72389ab6b36d8d9d32208d37b7f36700a228d279edc2057d6bafe3e3ed9d0109c41e208d0d1a24c1865a830048fb5445b1cf6b2614b56f0ffcfad7c05b6f01c5c5a11b808c18211d05edb00cebd021d91037101910a06122c4ec027433f4eb279b0a56576bff9e8202e934191515b87191ef18809025323365f7d4ca4af97b5999bc49fb5a3ce774ca86482b56c8df870df3edf902450d40e6cf97802933d3daf1e8a17533c2da5ab9a0b4cb6cb6d3d930167f2dc13a774e66597373a503dbc081dabfdfee9b111615c9ffa9478fc03cbf7aa1d47819565999dcdae53513aaeebd17888e06fefbbf433700713a81499364a24bebbe4581e2ef0e58aa9e3d65595d4181fcee1c3e1c3a05e8aa941499dc517736d78205e8c1810108592223432ede366c90bffbb3786ef870992db9e20afbcea476ee2c1700fbf6013ffb996f05d1668b89d116809c3e2db7763a076a0d8bda5dc5178d671f7372e4e242cf79b4fb66844545127c04aa3182ba595ae34274755f153bbd664251870ec09c39c09fff2c934076d82c31103233e5a2dc5db30333e5e5c9f2d5eeddfdfbbc4ea774e42b2808bd0274951ab4e95986c516bcc181010859e28a2b6466435d86959b2b4b03fc316ba12ebbb2ebf22b409602a9599060597ea5d29a01512f26ed349bddb5ab5c0474eae4fb73f5ed2b1902f5c35fefcc6330644002b5fc4ad5bc109d1910f3cc9ad5103087620604908d6fbb76b57e19965a801e88da0cb513963f3f43ed243656cea1d600a4ae4e8ad043ede7108a1880906532336567deea6ab908f9c94fe482ce576ae7abb434df9f2b90faf4015253836fc6cae592ee48ad512f26ed349b7dc925c08001fe79ae76ede41ceed9239b10ea3d8fc19001312b005197c83003629e2e5d80071e9059f4500d40c2c28089135bd61b9a2d2fcfffcbaf546a2d9a3f3f43edc4e1d0d709ebc811c9ea3100b13f062064998c0cb9e0d8b2c53f05e8aad858e01fff907d35ecec4f7f923691c1d6b1249833202fbd042c5deabfe74b4a924d35abaa8c65404e9c905a193b32230019344882b09212f9bb1ab4fa234345adfbed6f81cf3f97e541a12a33535ab3eb6de5ea2f8a22ffbebf3b60a99292644fa97ffc23f826b3b4d2d3094bed80c500c4fe188090657ef21359c6f2d7bfca1bb43f8be7d2d2a438cfce7af70ece7eed5a03103b66402ebd543628f397a4a4862e4ea9a9fabe372e4e960b68ed2866a69a1ad9a7c68c0c08d0b00cabbc5cea13ecbe2167a8080f976e51a1ec861be43565d532ace262ffb5fe7647bdd02e2a0abd027455bf7e728da065b2a6a040de3f82f1b3f562c300842ce370c8ecd48a15324b14aab337a1c6e592027375f32b4fcacbe51c87f26cb6fae17fd965faff9ff1f1726bc76558c5c5121c053a00e9d54bd677ab05b4dc059dfc2d2202f8e94fad5b86a5665e021d8000a1fb199a92225966b535b8370505406222273182010310037272723071e244b85c2e44454561c0800178e595579a1c939f9f8ff1e3c7a343870e70b95c983163064ab52c9cbfc86464c8854e5818d0bfbfd5a3212dd44e52a74e793faeac4c2eca9d21fc2ea37ef81b99798c8b935b3b16a2077a0f1095c3213fbbc619103b65cc2834646602fffc67c3eeef66cacf9720285033f22e9704eda1fc19aaa713165bf0068f10be34088c0d1b36202d2d0da5a5a598376f1e5e7ef965a4a7a7e3c89123f5c714171763d4a8513878f0209e7bee393cfcf0c3f8f8e38f316edc38d4d4d458387afb19364c5a7d5e79a514f592fda901486b4b87ecb40961a0a81f7446661eed9c015103107f2e57f344dd111d6006840263c2040902ac5886959f2f9daa02551cee70c8fb50287f86f6ec299b0a6a0d40d88237383049a5c39933673063c60cdc72cb2d58bd7ab5c7e3162c5880caca4ae4e6e62221210100306cd8308c1b370e6fbffd3666ce9c69d6906dcfe904162e0ced59f250a33500292f0ffd8bc98404e0d1478169d3f47f6f5494b441b56b06242ece9cfd69060d92f78093279901a1c0888a02c68f9765588f3c62eebf1dc80e58aa5fffdafacd1603c9e1909f616b8d04aaaba5268f1990e0c0cb3e1dde7df75d1c3f7e1ccf3efb2c00e0dcb973a8abab6b715c565616d2d3d3eb830f00183b762c929292b072e54ad3c61b2ca64f37760147d66006a481c301bcf082b136a60e876441ec9a0109f4f22b959a3dcacd65068402273313d8be5dea9bcc949f1fb80e58aa295380a95303fb6f584d4b27ac83076549370390e0c00044874d9b36a163c78ef8eebbef909c9c8c0e1d3aa053a74eb8efbefb70fefc7900c091234770e2c4090c1932a4c5f70f1d3a14b9566fc94ae4a3ae5de5961910dfd9753342330390cb2f07a2a31b0290500f5ac91ae9e95227b1668d79ffe68913f23e19e80cc8c540cd8078cbf4b0056f706100a2436161212e5cb88049932661c2840978efbdf770d75d7761c99225b8f3ce3b0100253f36b4efd6ad5b8befefd6ad1b4e9d3ac53a100a6a6161b26f003320beb3eb66846606204ea7b4e4cec961d04a81d3b9333076acb9ddb002dd01eb629292029c39d3b067903b0505329971c925e68d8b8c630d880e67cf9ec50f3ffc807befbd178b172f06004c9a3409d5d5d578edb5d7f0f4d34fa3b2b2120010ee66138a8888080040656525c2c2c2dcfe1b73e6cc41e766576dd3a74fc7f4e9d3fdf95f21f28996bd407831d9baf878d945dd4eeaea806fbf352f00016419d6860d5c824581959909fcea579299888d6dfdf8da5a60eb56e0da6b8ded2b959f2fc5e7975faeff7ba9a9c69db0ba77777f8cda01cb9f9bfbae58b1022b56ac68725fb9bacb2ef98401880e913f5664360f06a64f9f8ed75e7b0ddbb76fc715575c0100f54bb21aabaaaa6af23cee2c5ebc1857856a336f0a195a021066405a67c70cc8f7df4b31a7d90188dac99caf190a945b6f9500e4fdf7016fbd60eaea80d5ab65a7f8bd7b81175f041e7a48ffbf979f2f7b04856a772a33f5ed2b3fc7bc3cc964b913880e58ee26807372723078f060fffe4317212ec1d2a1fb8f6177bcda3ff347713f36f42f2b2bab3fa6c44d9eb0a4a4042e97cb63f6832858c4c4780f40148519102dd41a103b75b0316b0f90c61aefa3c2d70c054a6c2c306a94e765588a027cf49104c4d3a6c9de1d6969128c18614607ac8b45dbb692ddf05688ce3d40820b03101dd4c2f2e2666d348e1e3d0a00888d8d45f7eedd111b1b8b9d3b77b6f8feecec6ca4a6a6067ea04401d65a06a4b25266d1399bed5d5c9cecf07bf6acd523696045009292d2304bccd70c05526626b079b34c90a81405d8b811b8fa6a60e244790d7efe39b06e1df09fff097cf515f0e3c7bc2e6674c0ba9878eb8475e60c70ec18039060c2004487a93ff6b95bb66c5993fbdf78e30d84858561f4e8d10080cccc4cac5dbbb649a0b279f36614161662ca9429a68d9728505c2ea0b4d4f3e3ea873b67b3bd5393a976ea845554244d06cc0c04c2c2800103e4cf7ccd5020dd761b505323990e40028dd1a3811b6f94da814d9b802d5ba4ee03006eb94566dff576cf3a730638728419107ff2b617484181dc3200091eac01d12135351577dd7517de7cf34d5cb87001a3468dc2d6ad5bb17af56a3cf1c413b8e4c7d60b4f3cf10456ad5a85ebafbf1eb367cf46454505162e5c88810307d677cb220a66ad6540cacae496b3d9defdb87a13df7f2f6bc5f5aaad052e5cd0766cbb76da8a33cdec80d5d8555701df7cc3d70c05568f1e92e958b20458be1cf8e413e9c2f6d147c04f7fdaf277a44b17a939c8ca02eebf5ffbbfa3ced43300f19f9414a9993b75aaa11dbc4a0d4058f01f3c9801d169c99225f8ddef7e871d3b7660eedcb9d8b56b17162f5e8cf9f3e7d71f93909080cf3efb0c89898978fcf1c7b168d122a4a7a763e3c68dacffa090a006209e6a179801d146cd80182944afaa928ba988086d5ffdfa017ffb9b14d87a6355003274a8740ce26b86026df264e0cb2fa5dbdbaa55d2023a3ddd73809e91017cf699f7ac6f736a00f2635f1af283c69db09a2b2890f7d34e9dcc1d1319c70c884e6ddbb6c5bc79f3306fde3cafc7a5a4a460fdfaf5268d8ac85c2e97ccbc5754c8729de69801d1a66b57b9e836b2046bf76ef9be050b809e3dbd1f5b5707ac5c094c9f2ec73ff38cac757777c15554045c779dfef1f8ea8e3b80810381f6edcdffb7e9e2f2c003406aaa2cbd6ad3a6f5e3274d02eebd17f8e003e0eebbb5fd1bf9f912c84745f934546a242949f60dcacb03aeb9a6e9632c400f3e0c40884837974b6e4f9e741f803003a28dd3299d798c64407273e5e269ce1cc04b67ef7a33664831ed7ffd975c500d1902cc9fdfb0f61d908c9655199076ed80e1c3cdff77e9e2131eeeb995ab3b7171c0c891b20c4b6b00c20e58fe171121ed783d65401a77d323fbe3122c22d2ad7100e24e5959c3d21ff22e2ece58062427472e70b4041faab43429b2fdf453b9e01f3f5eb21ddbb6c9e3e5e592d5b2220021b2b38c0cf9dd397d5adbf1ec801518ee3a61290a3320c188010811e9a62500e1f22b6de2e38d67408cee597afdf5c0175f007fff3b70ee9c042137ded8b0df010310a2a63232a47bd6dab5ad1f5b59091c3ac40c4820b8eb8475ec984c9c3000092e0c408848b7d602106e42a89dba19a11e3535c0ae5dc6031040965d4d98007cfdb56ccc76f428f0cb5fca630c40889a4a489025825959ad1f5b502075570c40fc2f25459a0734de3b892d788313031022d22d2a4a96f03003e2bbb838fd1990bd7b81f3e7fdb3e6d9e190bd1176ed92b6a48f3dd6d09d8b881a646400ebd74bd6d01bb6e00d1cf567ba6f5fc37d0505524fd7b7af35632263188010916e0e87f7bd409801d1ce48062437576e5353fd378e366d809ffd0c78fe796dfb85105d6c32336579556b0d2ef3f3e5f7baf95e15e43bb5ad71e36558050540efded25c80820703102232c45b00c20c8876717112b055576bff9e9c1cd9b8d05d0732220a8cc444d9b4b0b56558ec8015381d3bca72b8c685e805054072b27563226318801091213131cc80f88391cd087d29402722e33232a410fdfc79cfc7b003566035ef84c50e58c18901081119c20c887fc4c5c9add6655875750c4088ac9299291d97366d72fff8850b7241cc0c48e034ee8475e10270e000039060c40084880c71b980d252f78f3103a29dde0cc881037201c44db788cc979222cb7d3c2dc33a7040bad43100099c9414f939575703870fcbcf9b0148f0610042448678ca80d4d60267ce3003a2556cacdc6acd80a805e80c4088cce770c832ac0f3e90d9f7e6d4a5415c821538fdfac9e74c61215bf006330620446488a70044dd299819106dc2c32558d39a01c9c991224c3570212273656602a74e019f7dd6f2b1fc7ca05327e0924bcc1fd7c542cd2ee5e54900121121ef89145c18801091212e976c06d5bc7b535999dc3203a25d5c9cbe0c08eb3f88ac73d555b259a7bb65586a072cb6b20e9cd8586982929f2f01c8e597cb3e20145c78ca88c8104fbba19797cb2d3320dac5c76bcb80288a644018801059475d86b5668d3485682c3f9ff51f66503b61b1056ff06200424486780a409801d14feb6684c5c552f8cffa0f226b656602c78e015f7dd5705f5d1db0772feb3fcca076c2620bdee0c50084880c692d00610644bbb8386d1910b5009d1910226ba5a5499d47e36558df7d079c3bc70c8819525224d8fbee3b0620c18a01081119e26d0996c3c15dbaf5d09a01c9c991b5cf3d7a047e4c44e499d309dc761bf0de7bb2341268e880c50024f0faf56ba83f6400129c18801091215dba48a0e12e03d2a9138b02f5888b034e9c68b99ebc39b5009d05ae44d6cbcc048a8a64620090002432520ad429b01a07790c4082132f1188c890366da4cec35d0684cbaff4898f97bef6a74e793f2e2787f51f447671dd7540d7ae0dcbb0f2f2a420ba4d1b6bc77531484800a2a3e5e7af66e329b830002122c3dced055256c60274bde2e2e4d6db32ac1327a4089df51f44f6d0b62d70ebad1280280a3b6099c9e1909f35b31fc18b01081119e62e00610644bff878b9f55688ce027422fbc9cc944e4c7979f2c50e58e679e411e0a187ac1e0519d5d6ea011051f08a896106c41fb464407272800e1d80be7dcd191311b5ee861be4f7f2cf7f96f73e6640cc33658ad523205f30034244863103e21f1d3a001111de33206afd078bfb89ec233c1c484f07de7843fece0084481b7e941191612e976c8cd7183320fa391c9205f19601c9cd65013a911d656602e7cf4b4dc86597593d1aa2e0c025584464183320fe131fef390372fa34b07f3feb3f88ec68fcf886f6bbedda593d1aa2e0c00084880c73b9a4756c5d9d2c0d521466408cf29601d9b54b6e198010d94f5414f0f39f33f820d28301081119e67249f071fab4643d2a2b819a1a66408c888f07f6ec71ff584e8ed4885c7185b96322226d5e7fddea11100517d680109161ea0650ea32acb232b9650644bff878cf19909c1c60e04059634e444414ec1880109161cd0390f272b9650644bfb838cf35202c402722a250c20084880c6306c47fe2e3811f7e00ce9e6d7a7f65a5ecb0ccfa0f22220a150c4088c8304f01083320faa99b1136cf82ecde0dd4d632002122a2d0c10084880c8b8c94afe64bb09801d12f3e5e6e9bd781e4e4006dda00575e69fe988888880281010811f9a4f15e206565d2ad2922c2da3105233503e22e00e9df9f3f5322220a1d0c4088c8278d0390f272663f8c72b9642f95e64bb058804e4444a186010811f92426a6690684f51fc6b469233fcbc619909a1ae05fff62fd0711118516062044e493e619100620c6c5c737cd80e4e703d5d5cc8010115168610042443e71b980d252f97359199760f9222eae69062427476e5353ad190f11115120300021229f3003e23fcd33203939405212d0a1837563222222f237062044e493e65db09801312e3ebe69068405e84444148a188010914f5c2ed9adbbb29219105fc5c5356440eaea807ffe9305e84444147a1880e8b075eb56389d4eb75fd9d9d94d8ecdcfcfc7f8f1e3d1a14307b85c2ecc983103a5ea4279a210d278377466407c131f0f9c3a25ddaff6ef07ce9e6506848888424f5bab07108c66cf9e8da1438736b92f3131b1fecfc5c5c518356a14ba74e982e79e7b0e15151558b4681176efde8decec6c848585993d64a280510390e3c7818a0a66407ca16e4678e24443013a031022220a350c400c183972243232323c3ebe60c10254565622373717090909008061c38661dcb87178fbedb73173e64cb3864a14706a0072f0a0dc3203625c7cbcdc7effbd0420bd7ac9de20444444a1844bb00c501405151515b870e182dbc7b3b2b2909e9e5e1f7c00c0d8b16391949484952b579a354c2253a801c8fefd72cb0c88716a06e4fbef59804e4444a18b01880177de79273a75ea84c8c8488c193306df7cf34dfd63478e1cc18913273064c89016df3774e850e4e6e69a3954a280ebd409703a1b021066408c6b1c80e4e4b0009d888842139760e9101e1e8ec99327e3e69b6f464c4c0cf6ecd983458b1661e4c891f8f2cb2f919a9a8a9292120040b76edd5a7c7fb76edd70ead429d4d4d4b00e844286d30974ed0a1c38207f6706c4b88808a06347e0ebafa5189d191022220a450c4074484b4b435a5a5afddfd3d3d33179f2640c1c3810bff9cd6fb06edd3a545656029060a5b988880800406565a5c70064ce9c39e8dc6c0a79faf4e9983e7dbabffe1b447ee7723103e22ff1f1c0faf5f26766408888acb362c50aac58b1a2c97de5e5e5168d26b43000f151626222264e9c88356bd64051144446460200ce9f3fdfe2d8aaaa2a36e2bcb1000010774944415400a83fc69dc58b17e32a5e75509071b9807dfb00874366f0c9b8b838e01fff90dbeeddad1e0d11d1c5cbdd04704e4e0e060f1e6cd18842076b40fca067cf9ea8aeaec6b973e7ea975ea94bb11a2b292981cbe5e2f22b0a396aa726b51e848c533b610d1a24011d111151a86106c40f0e1e3c88c8c848444747233a3a1ab1b1b1d8b973678be3b2b3b3919a9a6ac10889024bed84c5fa0fdfa985e84c84121151a8e25ca50e274e9c6871dfae5dbbf0e1871fe2c61b6facbf2f3333136bd7ae45717171fd7d9b376f46616121a64c9962ca5889ccc400c47f1a6740888888421133203a4c9b360deddbb7475a5a1ae2e2e290979787a54b97223a3a1acf3fff7cfd714f3cf10456ad5a85ebafbf1eb367cf46454505162e5c88810307e2ce3befb4f07f4014186a00c20274dfa901083320444414aa9801d1e1b6db6e43696929fef8c73fe2fefbefc7aa55ab3079f2647cfdf5d7484e4eae3f2e2121019f7df619121313f1f8e38f63d1a245484f4fc7c68d1b59ff4121891910ff99300178ec31a06f5fab474244441418cc80e8306bd62ccc9a354bd3b129292958aff6d2240a71cc80f84fefde40a3842a111151c8610684887cc60c0811111169c50084887cc60c0811111169c50084887cc60c0811111169c50084887c161303242602fdfb5b3d12222222b23b16a11391cfc2c280fdfbad1e05111111050366408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c407cf4ecb3cfc2e97462c080012d1ecbcfcfc7f8f1e3d1a14307b85c2ecc983103a5a5a5168c927cb562c50aab87405ef0fcd817cf8d7df1dcd81bcf0f853206203e282e2ec682050b1015150587c3d1e2b151a346e1e0c18378eeb9e7f0f0c30fe3e38f3fc6b871e350535363d188c9287e10d81bcf8f7df1dcd817cf8dbdf1fc50286b6bf50082d9c30f3f8c112346e0c2850b2d321b0b162c40656525727373919090000018366c18c68d1b87b7df7e1b3367ceb462c84444444444966206c4a06ddbb6212b2b0b8b172f86a2282d3220595959484f4faf0f3e0060ecd8b1484a4ac2ca952bcd1e2e11111111912d300031a0b6b616b366cdc2cc9933d1bf7fff168f1f397204274e9cc09021435a3c3674e850e4e6e69a314c2222222222dbe1122c03962c59826fbffd169f7efaa9dbc74b4a4a0000ddba756bf158b76edd70ead429d4d4d4202c2cacfefeaaaa2a0052b84ef6535e5e8e9c9c1cab87411ef0fcd817cf8d7df1dcd81bcf8f3da9d769959595168f24b83100d1e9e4c99398376f1ee6cd9b0797cbe5f618f545191e1edee2b1888888fa631a0720870e1d0200dc7efbedfe1e32f9c9e0c183ad1e0279c1f3635f3c37f6c573636f3c3ff675f8f0615c73cd35560f23683100d1e9a9a79e424c4c0c66cd9ae5f198c8c84800c0f9f3e75b3ca6663ad4635437dd7413fef77fff17bd7bf76ef1181111111159afaaaa0a870e1dc24d37dd64f550821a03101d0a0b0bf1faebaf63f1e2c5282e2eaebfbfaaaa0ad5d5d5282a2a42c78e1deb975ea94bb11a2b292981cbe56a92fd0080989818fcfce73f0fec7f80888888887c3262c408ab8710f41c8aa228560f22586cddba1563c68cf17acc9c3973f0873ffc01f1f1f1183d7a34feeffffeafc9e3c9c9c9e8d5ab17366edc18c8a11211111111d91233203a0c1830006bd6ac69d2725751143cf5d453387bf62c5e7ae9252426260200323333f1ce3befa0b8b8b8be15efe6cd9b515858885ffffad7968c9f88888888c86acc80f8c1e8d1a371f2e449ecdebdbbfebee2e2620c1a34089d3b77c6ecd9b351515181850b17a257af5ed8b973678b255844444444441703ee03e2070e87a3c54684090909f8ecb3cf90989888c71f7f1c8b162d427a7a3a366edcd824f8387ffe3c1e7bec3174efde1deddbb7c7d5575f8d4d9b3699fd5fb8e89d3b770ebffded6f317efc7874edda154ea713efbcf38edb63f3f3f3317efc7874e8d0012e970b3366cc406969a9c923be78ecdcb9130f3cf000faf7ef8fe8e8685c7ae9a598366d1a0a0b0b5b1ccb7363ae3d7bf660ca9429484c4c445454145c2e17468c1881e5cb97b73896e7c67acf3efb2c9c4e27060c18d0e2319e1f736dddba154ea7d3ed577676769363796eac91939383891327c2e572212a2a0a03060cc02bafbcd2e4189e1be39801b1d8f4e9d391959585b973e7e2f2cb2fc75b6fbd859d3b7762cb962d6cef66a2c3870fa36fdfbeb8f4d24bd1a74f1f6cddba156fbffd3666cc98d1e43835b3d5a54b173cf8e083a8a8a8c0a2458bd0ab572f64676733b3150093274fc6575f7d852953a660e0c081282929c1abafbe8ab367cf62fbf6edf59b81f2dc986fddba7578f9e5973162c40874efde1d3ffcf00356af5e8dcf3fff1ccf3cf30c9e7cf249003c3776505c5c8ce4e464389d4ef4e9d307fffad7bf9a3cc6f3632eb5a674f6ecd9183a746893c76ebae9a6fa36ff3c37d6d8b061036eb9e5160c1e3c18d3a64d43747434f6efdf0f4551f0fcf3cf03e0b9f1994296d9b16387e2703894175f7cb1febeaaaa2ae5b2cb2e53468c1861e1c82e3ee7cf9f57befffe7b455114e5ebafbf561c0e87f2ce3befb438eede7bef55a2a2a294efbefbaefebe4d9b36290e874359ba74a969e3bd987cf9e5974a4d4d4d93fb0a0b0b95888808e5f6db6fafbf8fe7c61e6a6b6b95d4d454a557af5ef5f7f1dc586fdab469ca0d37dca08c1e3d5ab9f2ca2b9b3cc6f363be2d5bb6280e8743c9cacaf27a1ccf8df94e9f3eadc4c7c72b9999995e8fe3b9f10d97605968f5ead568dbb62d7ef9cb5fd6df171e1e8ebbefbe1b5f7df5158e1c3962e1e82e2eeddab5435c5c1c00692ce049565616d2d3d3eb1b0b00c0d8b16391949484952b57067c9c17a3b4b434b46ddbb45fc665975d86949414ecddbbb7fe3e9e1b7b703a9d4848486832fbc77363ad6ddbb6212b2b0b8b172f86a2282d960cf3fc58475114545454e0c2850b6e1fe7b931dfbbefbe8be3c78fe3d9679f05204bb4ebeaea5a1cc773e31b062016cacdcd45525212a2a3a39bdcafa663fff9cf7f5a312cf2e0c891233871e204860c19d2e2b1a14387223737d782515d9c1445c1f7df7f8f989818003c3756fbe1871f505a5a8a03070ee08f7ffc233ef9e4133cfae8a300786eac565b5b8b59b36661e6cc99f5cb151be3f9b1d69d77de894e9d3a2132321263c68cc137df7c53ff18cf8d35366dda848e1d3be2bbefbe437272323a74e8804e9d3ae1befbeeabdf609ae7c6776cc36ba1929292fa4d0b1b53ef3b7af4a8d943222fd48d253d9db353a74ea1a6a686eb3e4db07cf9721c3d7a14f3e7cf07c07363b5871e7a084b972e0500b46ddb162fbffc727d6697e7c65a4b962cc1b7df7e8b4f3ffdd4ede33c3fd6080f0fc7e4c99371f3cd37232626067bf6ecc1a2458b3072e4487cf9e597484d4de5b9b1486161212e5cb880499326e19e7beec10b2fbc802d5bb6e095575e41797939de7df75d9e1b3f600062a1caca4a848787b7b83f2222a2fe71b20ff57cb476cef88613587bf7eec5fdf7df8f112346e08e3bee00c07363b5b973e762ead4a9387af428962f5f8e071e7800919191b8e38e3b786e2c74f2e449cc9b370ff3e6cdab2f6a6e8ee7c71a696969484b4babff7b7a7a3a264f9e8c810307e237bff90dd6ad5bc7736391b367cfe2871f7ec0bdf7de8bc58b170300264d9a84eaea6abcf6da6b78fae9a7796efc804bb02c141919599fce6bacaaaaaafe71b20ff57cf09c59e7d8b163f8e94f7f8a2e5dba60f5ead5f56bd9796eac959c9c8c3163c6e0f6db6fc7ba75eb3076ec58cc9933075555553c37167aeaa9a71013138359b366793c86e7c73e1213133171e2446cd9b2058aa2f0dc5844fd994e9f3ebdc9fdeadfb76fdfce73e3070c402cd4ad5b37b7cbacd4d45ef7eeddcd1e1279a1a65ad5f3d3584949095c2e17673b02e8f4e9d398306102ce9c3983f5ebd7e3924b2ea97f8ce7c65e32333371faf469ecddbb97e7c62285858578fdf5d7316bd62c141717e3f0e1c3387cf830aaaaaa505d5d8da2a222949595f1fcd84ccf9e3d515d5d8d73e7cef1dc5844bdf68a8f8f6f72bfdaa8a6acacacfe189e1be318805868d0a0412828284045454593fb77ecd80100484d4db56258e4418f1e3d101b1b8b9d3b77b6782c3b3b9be72b80aaaaaa70cb2db760fffefd58bb762daeb8e28a268ff3dcd88bba3cc1e974f2dc58e4c89123a8ababc3830f3e88be7dfbd67f656767a3a0a0007dfaf4c133cf3cc3f36333070f1e44646424a2a3a3796e2ca2169617171737b95f9d308e8d8d45f7eedd796e7cc400c44293274f466d6d6d7df12620e9bcb7de7a0b575f7d357af4e861e1e8c89dcccc4cac5dbbb6c91bd3e6cd9b515858882953a65838b2d0555b5b8b69d3a661c78e1d58b56a15860f1feef6389e1bf39d3871a2c57d353535f8cb5ffe0297cb55df7589e7c67c03060cc09a356bf0fefbefd77fad59b306fdfbf7c7a5975e8af7df7f1f77df7d37009e1f2bb8fbddd9b56b173efcf043dc78e38df5f7f1dc986fead4a9008065cb9635b9ff8d37de40585818468f1e0d80e7c657dc09dd62d3a64dc39a356b3077ee5c242626e29d77dec1d75f7f8dcd9b37e3da6bafb57a781795575f7d15e5e5e5387af428962c59828c8c8cfa598c071f7c101d3b76acdff9b473e7ce983d7b362a2a2ab070e142f4ead50b3b77ee64ca3500e6cc9983975f7e19b7dc728bdb37f5db6fbf1d00786e2c70db6db7a1a2a202a3468d42f7eedd71ecd8312c5fbe1c05050578ebadb73063c60c003c3776327af4689c3c7912bb77efaebf8fe7c77c63c68c41fbf6ed91969686b8b838e4e5e561e9d2a5080f0fc7575f7d85e4e464003c3756b9e79e7bf0e69b6f62ead4a918356a14b66edd8ad5ab57e389279ea8efbec873e3230b37412445763e7fe49147946eddba29111111caf0e1c3950d1b36583dac8b52efdebd1587c3a1381c0ec5e9742a4ea7b3fecf454545f5c7edd9b347b9e9a69b94a8a828a56bd7aeca2f7ef10be5f8f1e3168e3cb48d1e3dbafe5c34ff723a9d4d8ee5b931d7dffef63765dcb871ca25975ca2848585292e974bb9f9e69b954d9b36b53896e7c61e468f1ead0c1830a0c5fd3c3fe67af9e59795e1c3872b2e974b090b0b537af4e8a1cc9831433970e0408b63796ecc575353a3fcfef7bf577af7eeadb46bd74e494a4a525e7ae9a516c7f1dc18c70c081111111111998635204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444649aff07ce873914b7799b030000000049454e44ae426082}\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u35201?\u35299?\u26512?\u30340?json\u25991?\u20214?\u20301?\u20110?{\f1 data/2014-01-01-0.json}\u65292?\u22823?\u23567?6.6M\u65292?\u26174?\u28982?\u25105?\u20204?\u21487?\u33021?\u38656?\u35201?\u29992?\u27599?\u27425?\u21482?\u35835?\u19968?\u34892?\u30340?\u31574?\u30053?\u65292?\u36825?\u36275?\u20197?\u35299?\u37322?\u20026?\u20160?\u20040?\u35832?\u22914?sublime\u25171?\u24320?\u30340?\u26102?\u20505?\u24456?\u24930?\u65292?\u32780?\u29616?\u22312?\u25105?\u20204?\u21482?\u38656?\u35201?\u37324?\u38754?\u30340?json\u25968?\u25454?\u20013?\u30340?\u21019?\u24314?\u26102?\u38388?\u12290?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 ==,\u36825?\u20010?\u25991?\u20214?\u20195?\u34920?\u20160?\u20040?\u65311?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 {\b 2014\u24180?1\u26376?1\u26085?\u38646?\u26102?\u21040?\u19968?\u26102?\u65292?\u29992?\u25143?\u22312?github\u19978?\u30340?\u25805?\u20316?\u65292?\u36825?\u37324?\u30340?\u29992?\u25143?\u25351?\u30340?\u26159?\u24456?\u22810?\u12290?\u12290?\u19968?\u20849?\u26377?4814\u26465?\u25968?\u25454?\u65292?\u20174?commit\u12289?create\u21040?issues\u37117?\u26377?\u12290?}\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 \u25968?\u25454?\u35299?\u26512?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 import json\line -for line in open(jsonfile):\line - line = f.readline()\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u28982?\u21518?\u20877?\u35299?\u26512?json\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 import dateutil.parser\line -\line -lin = json.loads(line)\line -date = dateutil.parser.parse(lin["created_at"])\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u36825?\u37324?\u29992?\u21040?\u20102?{\f1 dateutil}\u65292?\u22240?\u20026?\u26032?\u40092?\u20986?\u28809?\u30340?\u25968?\u25454?\u26159?string\u38656?\u35201?\u36716?\u25442?\u20026?{\f1 dateutil}\u65292?\u20877?\u21040?\u25968?\u25454?\u25918?\u21040?\u25968?\u32452?\u37324?\u22836?\u12290?\u26368?\u21518?\u26377?\u23601?\u26377?\u20102?{\f1 parse_data}\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 def parse_data(jsonfile):\line - f = open(jsonfile, "r")\line - dataarray = []\line - datacount = 0\line -\line - for line in open(jsonfile):\line - line = f.readline()\line - lin = json.loads(line)\line - date = dateutil.parser.parse(lin["created_at"])\line - datacount += 1\line - dataarray.append(date.minute)\line -\line - minuteswithcount = [(x, dataarray.count(x)) for x in set(dataarray)]\line - f.close()\line - return minuteswithcount\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u19979?\u38754?\u36825?\u21477?\u20195?\u30721?\u23601?\u26159?\u23558?\u19978?\u38754?\u30340?\u35299?\u26512?\u20026?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 minuteswithcount = [(x, dataarray.count(x)) for x in set(dataarray)]\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u36825?\u26679?\u30340?\u25968?\u32452?\u20197?\u20415?\u20110?\u35299?\u26512?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 [(0, 92), (1, 67), (2, 86), (3, 73), (4, 76), (5, 67), (6, 61), (7, 71), (8, 62), (9, 71), (10, 70), (11, 79), (12, 62), (13, 67), (14, 76), (15, 67), (16, 74), (17, 48), (18, 78), (19, 73), (20, 89), (21, 62), (22, 74), (23, 61), (24, 71), (25, 49), (26, 59), (27, 59), (28, 58), (29, 74), (30, 69), (31, 59), (32, 89), (33, 67), (34, 66), (35, 77), (36, 64), (37, 71), (38, 75), (39, 66), (40, 62), (41, 77), (42, 82), (43, 95), (44, 77), (45, 65), (46, 59), (47, 60), (48, 54), (49, 66), (50, 74), (51, 61), (52, 71), (53, 90), (54, 64), (55, 67), (56, 67), (57, 55), (58, 68), (59, 91)]\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 Matplotlib\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u24320?\u22987?\u20043?\u21069?\u38656?\u35201?\u23433?\u35013?``matplotlib\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 sudo pip install matplotlib\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u28982?\u21518?\u24341?\u20837?\u36825?\u20010?\u24211?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 import matplotlib.pyplot as plt\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u22914?\u19978?\u38754?\u30340?\u37027?\u20010?\u32467?\u26524?\u65292?\u21482?\u38656?\u35201?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u26368?\u21518?\u20195?\u30721?\u21487?\u35265?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 #!/usr/bin/env python\line -# -*- coding: utf-8 -*-\line -\line -import json\line -import dateutil.parser\line -import numpy as np\line -import matplotlib.mlab as mlab\line -import matplotlib.pyplot as plt\line -\line -\line -def parse_data(jsonfile):\line - f = open(jsonfile, "r")\line - dataarray = []\line - datacount = 0\line -\line - for line in open(jsonfile):\line - line = f.readline()\line - lin = json.loads(line)\line - date = dateutil.parser.parse(lin["created_at"])\line - datacount += 1\line - dataarray.append(date.minute)\line -\line - minuteswithcount = [(x, dataarray.count(x)) for x in set(dataarray)]\line - f.close()\line - return minuteswithcount\line -\line -\line -def draw_date(files):\line - x = []\line - y = []\line - mwcs = parse_data(files)\line - for mwc in mwcs:\line - x.append(mwc[0])\line - y.append(mwc[1])\line -\line - plt.figure(figsize=(8,4))\line - plt.plot(x, y,label = files)\line - plt.legend()\line - plt.show()\line -\line -draw_date("data/2014-01-01-0.json")\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 \u27599?\u21608?\u20998?\u26512?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u32487?\u19978?\u31687?\u20043?\u21518?\u65292?\u25105?\u20204?\u23601?\u21487?\u20197?\u20998?\u26512?\u29992?\u25143?\u30340?\u27599?\u21608?\u25552?\u20132?\u24773?\u20917?\u65292?\u20197?\u24471?\u20986?\u29992?\u25143?\u30340?\u30495?\u27491?\u30340?\u24037?\u20855?\u25928?\u29575?\u65292?\u27599?\u20010?\u31243?\u24207?\u21592?\u30340?\u24037?\u20316?\u26102?\u38388?\u21487?\u33021?\u26159?\u19981?\u19968?\u26679?\u30340?\u65292?\u22914?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 {\pict\pngblip\picw514\pich428\picwgoal5160\pichgoal4300 89504e470d0a1a0a0000000d4948445200000202000001ac080200000020d958980000012f694343504943432050726f66696c6500002815636060327074717265126060c8cd2b290a72775288888c5260bfc0c0c1c0cd20cc60cc609d985c5ce01810e0c3000479f979a9201a157cbbc6c00812b9ac0b320b558e208f2bb9a0a804a8ea0f101ba5a416273330301a00d9d9e525054071c63940b648523698bd01c42e0a0972068a1f01b2f9d221ec2b20761284fd04c42e027a02a8e60b487d3a98cdc401622741d8322076496a05c85e06e7fc82caa2ccf48c12052303030305c794fca45485e0cae292d4dc6205cfbce4fca282fca2c492d414a05a88fb40ba1804210a4121a661686969a10916a522018a0788719f03c1e1cb2876062186b028b9b4a80cca636432666020c4479831478281c17f290303cb1f8498492f03c3021d0606fea9083135430606017d06867d7300c3af506fec25acb40000000970485973000016250000162501495224f00000019d69545874584d4c3a636f6d2e61646f62652e786d7000000000003c783a786d706d65746120786d6c6e733a783d2261646f62653a6e733a6d6574612f2220783a786d70746b3d22584d5020436f726520352e342e30223e0a2020203c7264663a52444620786d6c6e733a7264663d22687474703a2f2f7777772e77332e6f72672f313939392f30322f32322d7264662d73796e7461782d6e7323223e0a2020202020203c7264663a4465736372697074696f6e207264663a61626f75743d22220a202020202020202020202020786d6c6e733a657869663d22687474703a2f2f6e732e61646f62652e636f6d2f657869662f312e302f223e0a2020202020202020203c657869663a506978656c5844696d656e73696f6e3e3531343c2f657869663a506978656c5844696d656e73696f6e3e0a2020202020202020203c657869663a506978656c5944696d656e73696f6e3e3432383c2f657869663a506978656c5944696d656e73696f6e3e0a2020202020203c2f7264663a4465736372697074696f6e3e0a2020203c2f7264663a5244463e0a3c2f783a786d706d6574613e0a9c3576df00001f2c494441547801eddd7d905d657d07f01b08e64a2d9baa64690737554ca6b56c7ccb32b5093328d851924e9a0d53e8522dc651dc4cc560673a647c0b2a13aa8c41d0ac81313a7658a13549ad80339d04a8d9944a02ce64e31f66f58f046d598a361b5fb84402bdf7ee4b7643ee66cfeed9e73ee79c4f2643eeee39f7797ecfe777f67eef39f7de65ce3347874afe10204080405105ce2aeac2ad9b000102046a0262c07140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e0001027311102040205a811f7fffe99ffcd733519577d90716cd3bf79ca84a9a6131ce066608e8ee040810c8b68018c876ff544f800081190a88811902ba3b010204b22d2006b2dd3fd513204060860262608680ee4e8000816c0b88816cf74ff504081098a180189821a0bb13204020db026220dbfd533d0102046628e0e3630d018fdd76dbf307fa1b6e0ebe614eeb82dffbfce7834f6b420204722ee06c20e70db63c0204084c2e200626f7b19500010239171003396fb0e51120406072013130b98fad040810c8b98018c879832d8f000102930b8881c97d6c25408040ce05c440ce1b6c79040810985c400c4cee632b010204722e200672de60cb234080c0e4026260721f5b0910209073013190f3065b1e0102042617f03b851afa7cedcfcffae15bcf6eb839f886f3cf3dfb96e0939a900081dc0b381bc87d8b2d9000010293098881c9746c23408040ee055c14ca7d8b2d90408605fee07ff6bef2f17f8d6a0173afbba3546a89aaa41916e36c608680ee4e8000816c0b88816cf74ff504081098a1808b42330474f79ac00ffef7899e835f8aca62fd1bfffe0daffc93a84a520c8138059c0dc4d917551120402090801808046d1a020408c429e0a2509c7dc958554b2bcfddf7b3a7a22afa577ff4dc89a80a520c8158059c0dc4da19751120402088801808c26c12020408c42a200662ed8cba0810201044400c0461360901020462151003b176465d0408100822200682309b84000102b10a8881583ba32e0204080411100341984d4280008158057c7c2cd6cea88b00815269f79bcefa4e4b44ff13c06a4f6e7bf99cf3f2d51a6703f9eaa7d510204020a1801848086677020408e44bc045a186fddcf0cc2fcef9ef887e4fce89df9df3ab86c5da40800081690a381b98269cbb112040201f0262201f7db40a0204084c53400c4c13cedd081020900f0131908f3e5a05010204a6292006a609e76e040810c8878018c8471fad82000102d3141003d3847337020408e443400ce4a38f5641800081690af8f8d834e19a75b7dffccbb72adff94eb3663fedbcf3b77c39aedff972da2a7d9300810602ce061ac0f8360102048a2120068ad167ab24408040030117851ac0c4faed7f7feb590fbe3aae6b309b5f563a27562e75112070460167036724b203010204f22c2006f2dc5d6b234080c019055c143a23911d0810689ac09a63bffa9b9f45f4fbdeab1043274e348d6376267636303bae46254080404604c440461aa54c020408cc8e8018981d57a31220402023026220238d52260102046647400ccc8eab51091020901101ef146ad8a84f3d7fdd81e36b1a6e0ebe61c16f5fb6b954bafad82fff36b6374ebcf042700c131220909a80b381d4280d448000812c0a88812c764dcd040810484d400ca44669200204086451400c64b16b6a264080406a026220354a03112040208b0262208b5d533301020452131003a9511a880001025914100359ec9a9a091020909a8018488dd240040810c8a28018c862d7d44c800081d404c4406a9406224080401605c44016bba666020408a426200652a33410010204b2282006b2d83535132040203501bf683a35ca220ff4fd17fe78f3f15ba212b8e9858bdaa32a48310462157036106b67d4458000812002622008b34908102010ab801888b533ea224080401001311084d9240408108855400cc4da19751120402088801808c26c12020408c42a200662ed8cba0810201044400c046136090102046215f0f1b1583ba32e02044aa56f9e78fb8ee36f884a624be9152d511534e3629c0dcc98d000040810c8b28018c872f7d44e800081190b888119131a800001025916100359ee9eda091020306301313063420310204020cb02de2994e5eea93d9b020fdffda3e3bf39114fed0b5e7fde9b575c184f3d2a092ce06c2030b8e90810201097801888ab1faa214080406001311018dc74040810884b400cc4d50fd510204020b08018080c6e3a020408c4252006e2ea876a0810201058400c0406371d010204e212100371f54335040810082ce0e36381c14d174ee0d95f1effdeb61f879b6f0a33bdfecfcebfa8e3fc371df8d28b43c7a6b07ba05dce99b3b454fa70a0c94c139f80b381f87aa2220204080414100301b14d45800081f8045c148aaf272a4a49e065bffd55c7e3ff98d260e90c537edd55a5d25fa433965108a424e06c202548c3102040209b0262209b7d533501020452127051282548c3c42730746ee9a6f79d1d555d7ff9ba39574655906208944ace061c0504081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe2091020e0e363193b06fee9f9777efbf892a88ade5a7a79a9f4eba84a520c01025317703630752b7b1220402087026220874db5240204084c5d400c4cddca9e040810c8a18018c861532d890001025317100353b7b2270102047228e09d42396caa250d0bbcf2c40bf7fdeca9a8349e3dffd7c7a32a483104fca269c7000102040a2ee0a250c10f00cb2740a0e8022e0a15fd08b0fef0026d97fdfcac678f869fb7d18cc7db8e3ddb689bef1740c0d940019a6c89040810682c20061adbd842800081020888810234d912091020d058400c34b6b185000102051010030568b225122040a0b18018686c630b0102040a2020060ad0644b24408040630131d0d8c6160204081440400c14a0c99648800081c60262a0b18d2d040810288080182840932d910001028d05c440631b5b081020500001315080265b220102041a0b8881c636b6102040a0000262a0004db644020408341610038d6d6c214080400104c440019a6c89040810682c20061adbd842800081020888810234d912091020d058400c34b6b185000102051010030568b225122040a0b18018686c630b0102040a2020060ad0644b24408040630131d0d8c6160204081440400c14a0c99648800081c60262a0b18d2d0408102880c0dc02acd11209c425f09ee3370d1d3f114f4d1dcfcf5f1f4f352a092ee06c2038b9090910201093801888a91b6a214080407001178582939b3094c0cf4be75d7bfc9650b34d699ebf3af1fbaba6b4a39d088413703610ceda4c0408108850400c44d81425112040209c801808676d2602040844282006226c8a92081020104e400c84b33613010204221410031136454904081008272006c2599b89000102110a8881089ba22402040884131003e1accd448000810805c440844d5112010204c209888170d6662240804084026220c2a62889000102e104c440386b33112040204201311061539444800081700262209cb59908102010a1801888b0294a2240804038013110ceda4c0408108850400c44d81425112040209c801808676d2602040844282006226c8a92081020104e400c84b33613010204221410031136454904081008272006c2599b89000102110a8881089ba22402040884131003e1accd448000810805c440844d5112010204c209888170d6662240804084026220c2a62889000102e104c440386b33112040204201311061539444800081700262209cb59908102010a1801888b0294a2240804038013110ceda4c0408108850400c44d81425112040209c801808676d2602040844283037c29a944480407881731fde78cecf1e0b3f6fa3195ff89d57ff72f5371a6df5fd14059c0da4886928020408644f400c64af672a264080408a026220454c43112040207b0262207b3d53310102045214100329621a8a000102d9131003d9eb998a09102090a280184811d350040810c89e8018c85ecf544c8000811405c4408a988622408040f604c440f67aa662020408a428200652c43414010204b2272006b2d73315132040204501319022a6a1081020903d013190bd9ea998000102290a888114310d45800081ec098881ecf54cc50408104851400ca4886928020408644f400c64af672a264080408a026220454c43112040207b0262207b3d53310102045214100329621a8a000102d9131003d9eb998a09102090a280184811d350040810c89e8018c85ecf544c8000811405c4408a988622408040f604c440f67aa662020408a428200652c43414010204b2272006b2d73315132040204501319022a6a1081020903d81b9d92b59c50408cc82c0a79f7fcf0f8eaf9a8581a739e4abce39e78e69ded5dd9209381b48e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e0102049209cc79e6e850b27b44bff7256f79732a359e78d39a175ff5da54864a6790dffcdfdc47bf7ae2b5cb5e7cdddbd21930a551cefe8f3b5f9c7fe10b6f5c9dd278e90c73d613ff3ce737bf38b1fc43e90c97d22867fd78cf5987bfff7cb5aa79af4869c8148699f3f4a1b3fbffedc41b57bff8ea8b52182ead219e3d36f73fef3af1877ffae245cbd31a329571cefede97e7fcf6d95486aa0ef2d8133f486ba8698f2306a64de78e04081098a9801898a9a0fb13204080c00c05bc363043407727408040b605c440b6fba77a020408cc50400ccc10d0dd091020906d013190edfea99e0001023314100333047477020408645b606eb6cb8fb8fa4a6570607fffc09123c72aa552b965415bdbc5eded6d2de5e02557068f0c3e579bb5bca0adb5e1f495a3479eae7f82a4a535589195a1c1a787aa3a67f8b3a06d61c3b2cf70d7049b478a99d7d2d63a7fe2dd2a4347066b34a7db346cdbb260e1ec3776ac8f13ab3be5ab80ed3b39f3d8c173f25be36f4d7ae08ddf71366e572a0303fbfa0f1d393654fd2198775e6b5b7b7bfba2b6535a3c1b136769cc1c7e6e2002fecade6d37aefa68ef4b2b59bde9fe3bbb2f0df0a0363675e5d03d175eb26ef8cbcfee39fca1f6d3ff00ecddd0b2aaa7be57fb969feeb9364c8503bd2bdeb6ae6facd446376edb33785dfbac57d4bf6df9db3fda5f2a753efad4d7168d9fad72e0b20b2e3d582baefb89a3b7b68dafb2b2efb20baea86e5afdd57d77af593c7e4bfab72b07565d70e9de338e1bb07d63b59cb18fb73d3678dde2f1a663779ddd1b47fab6bd77e58df5de4d9ca873d3a35bd64de8f2c4ed45fbca45a1f43bbe7ff3156319b0ba6bfd27366dbaa16be463903b37ac7cd7e67de94f39d988277ffc3eded377fae7de95035f1fce80ea38217f38e64d78506db488f3e635da92e6f7db3ad6d687dbd17f6402d2507fdfe8e348cfc1899b2a03fdc39b56774c6921332bb7bc602af70fd9beb17aced4c7f3c6f60c7863a86fcb5b4633e0e2ceae1b3eb5e913ebbb46e6dfb1e16defdc523ff90d5850c4538981b49b33b8eb5d37579f54569f566e7ee2a9a1bbb7dcfc91ee759fdcf2c04f7fb4e7fafa54076fbe62f7c44793b42b683c5e6fcfc1d31dfb83fbb7ef1cbbd3d363b766fdc6a2353dd5df6532f6f7a78f6da94fd9f9f0e193dfac6eed0cf244b265d1d265f5e91fea1f1cbff281be07c6be7c70dfc44dfbb6d737adbfb8ed64d68eed9cf28df2e2bbc7593d73f4f05d9db519967d61cf1860edc6b635b35f4aa3952d3fa571638585e9e0c4b20e7f71e586fa773abf7d60f0916d3d9fbc71dd4736f63cf3d4a1bbbadb6bdfefdff0b95d8727dea5b85f8981947b5f191a7ea06dbf6fd3daf10f0ee5d625b71cb86778b227a770413ce5b24686ebfb7adf4b0ffdcade5b6f2fd57f346667d2a98f3af208560ef2f4ffd4b2ca6dabebe76cf7eeee1f773a30b8f7e69397adeeddbd7fdca6a30777d437755f11e05ce0d46a4b23560bcacd7bd83fb5a605cd69dca965d4bfae3cf764fddf1beebf75d9c49fc3ce4df78c3c213b72bae744a71d2defdf1403b3d4e1fee79e1bf788313c495bc79d5dcb2fae3ee2be64cb2c15f1d261efbd75f7a9c7fe60df07ab8f66fda565cba3888297d61cea3bf3dfda597f82dddb77f28c68f0d0676ad377df777ffd4ca577d79363bdab1cb9b79e0237ac98e5570542ad3f67f30c3f9778ee344fb916aefe42f7c5eda505a5fa3b2772b6ec692d470c4c8b6d0a777aef92ee07fb0f8f3d68d4efd1fad75b1e78e468df751da77f9d760aa34e7b97f6dbeed956bbe8d17fe3de8997a40676d7cf513ab7fcc3fbe2fa3d8ed35eeab4efb8a8e38afa7d7b06468906fb77d5bed3d9b16c69c735b55bbd63af1c545f18a8bf60db7e797b6b6d8b3fd5139478ce4c4a238ff15baf5df2c5070e9c92054bd7defac89ea1bbd77668dab0801848f948282fbe7cf8a26da9b4e3bd972eb9707ecb07d67dea9bdb77f51f1a9c180929cf7ba6e1facf5bb4f4fafa2b645b1f38346ee7c3df5cb7a3fae50d6b97bf26a69fe1711586bb595ed4beba3edbde43c3af01540eeebebdfa8d6b56b497cb6defa89f2a7c77ff91e1829e1c4e88f6ae8b5bc25518f74cbdd5e37cefae5dbbc7fd7df0813da3911ab6f6f2e21bb6d41b562a7de6da4b2fbaa065d5daeeaff46edfdb7fe89448085b56a4b38981d41b33bf73dbe16f6c1a7d4f42a9b4b3f7f60fbf7fcddb2f595c8d84bfdbb87de0d48b32a917d060c072ebb2ae8dd56d7b37f48e3c92954a95febe3b6abb2f5fbd7461a9d2acca6a1544f1a7bcf81df533a287fa8685061faabf81ea1db537029597aea8f57467efbe7a9c57fa7b6bf1797157871418ebdd1def5fb3eaaa35578ffbfbde6b573e34d09ce73fed5d3d0fdfb3e9e2d1e2f6eee8fdf8bab5ab2eeda846c2656b37ef3d7474748b7f4b6260360e82f9577657df9370f8d13df7dff5858dabc75d73bff7f6b56f5bb8bc29ef14aabe54d1b27445fdd96ecf83fd233f038ff7d63f52d0d55d7d5fbe0ba5b5c7faaeda53c883b7efaf9d0e1cd9bfb57674742fadbfc6b8a06345edabbededac35ae5d077eb2f0c5cb37c51ed9bfed405aaefcbbcbeabeb9a717f5777762f9ad21b5d6743b0dcbe62dd2347077ff8d89efbbebaf9face93d73c0feed8b8ea92859ff64ea151f5b9a337fc9bb64079fea2f64bab7f3bd7de7877a5726460dfcecd2b3f537b06d97ff5926d3f39baae09cf22cb8baf5bdfbef3f6feea0708aedbb2b23cfa7181cf769ffc09495b2163e3bd6669f5e5816a93b63f59b9f1b97df51706ba570cbf11a8dcd65e7d87c9d652dfe30395f69681fa5b6c972f5b14fe659e68493befded2d394cf2d4c2a526e5dbca4faf7f2356b6fd956fd40f8a1dddb377ff0e6dacfe11d575d7bf9e1be654df8399cb4de666c743690ae7a657fefe68f6de83ef57d99d54bcbed977e64dbe07deb87df8db3af39174c4ba5b776dd585b706f4ff529edd0c8c705baaf6cf0d1e2746932315ab9ada37ec2d47f70e0d0c1ddb5cf818f7b23d0c22bebeddbd97f68a0bffe19c0e55df13dea3593b939577f4eb7e2c17df77c6cc34d9fdeb6676249e596b6259d377eed896fadafdfa9ff48b37e0e4f577313bf270652c61fe8ddb8b5a7f7ebfb862f2e9f327879d99ab5c3df6ad6cbb1e5c5cb3f51aba06fe7ee7dbb7b6fafde5ab6a9ab196f7b1f6688efbfe5b677d75f59dcd9b36d6b2d0526bc11e8f557aca97e6b6f6fcfd7b7d72e09adeeea68561fe383ab55148fc6b1815d5b7b7aeef868ff692f75b62d5f33fc51c152533ea1125ff3c440ba3d29b72dad3ddf3f78f3ca1d87263e11a9cff3f8aeedc3f39d665bba85341cadf5cafa3b28eeb8f68a0fd61ee64ad77bdbfb04abea05e5da4bc1d5c7fadafb4127be11a8b57d69ed25c7bedead3b6a1f147ff752015a6588f1cf796d4bea656df8dcf6f1ef8b1b297568ffeefa9b7d63acbc2935898194d947aeba944a1fbca4f52bb5372c8f3ce057860eefded6bd6af823a99d2b9b783161d1e5236724b595b76f9ef019cb94313239dc6bdaab2f0f8cfc59f6bee5132e1db7b45f73f233765dede33f9e3a7a17ffc620d0ba74c535f53ab6bebfe3033df71f197d9768a572b47fd7b68b566eac6fec1c7ef13f86829b5b831848d9bfbc78cda35fed1e1ef4e3b5372cb7be7a7e4bf5ef850b975c3df23b47bb1eded2c45ffc522ab5768c7eb2a174fd4d974f78984b19639ac335ef54a95670f5659ce14790eaed6b3a4ef984f0fc65a3bf25b0d4b5c2272d461b3cfa5c67f4ebe6ff5b5e7cdb63db86cbd8b9e1dab72c1cfd31bc60e1dbafaabf3c562addf5d8e6263e1b6b3ed1b80ac4c0388c946e2e5a73eb4f1ebbff86ce93cf1bc706befe0bdb7ff854cfecffd6e4b109ab8f6a238ff3e37e217ef9f2b51beb7b745e73f9c2b15de70defd9b4b7f78d15d2ecdf9253fda4d8c8a73eba96bee47162d1f2916dd7573f53365672f36ecc8be0eaf6bcf2f0e7a81bffdf2c9ae1537d42f6cce17d77ae1ff910d9f81296756f7ef847839d8bbdcb6b44c5ff6f60fce191f2edea19e8d0d343c72ad597a9e6cd6b6d59d0323f86078e9417693802910b54aabfefb1fa3f38aabd5a3cafbc60c182f9cd7ea2119d971888ae250a2240804048011785426a9b8b000102d1098881e85aa2200204088414100321b5cd45800081e804c440742d5110010204420a888190dae62240804074026220ba9628880001022105c440486d73112040203a0131105d4b144480008190026220a4b6b9081020109d801888ae250a224080404801311052db5c040810884e400c44d7120511204020a4801808a96d2e02040844272006a26b89820810201052400c84d43617010204a2131003d1b5444104081008292006426a9b8b000102d1098881e85aa2200204088414100321b5cd45800081e804c440742d5110010204420a888190dae62240804074026220ba9628880001022105c440486d73112040203a0131105d4b144480008190026220a4b6b9081020109d801888ae250a224080404801311052db5c040810884e400c44d7120511204020a4801808a96d2e02040844272006a26b89820810201052400c84d43617010204a2131003d1b5444104081008292006426a9b8b000102d1098881e85aa2200204088414100321b5cd45800081e804c440742d5110010204420a888190dae62240804074026220ba9628880001022105c440486d73112040203a0131105d4b14448000819002ff0f2d7f2d973eddd70f0000000049454e44ae426082}\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u36825?\u26159?\u25105?\u30340?\u27599?\u21608?\u24773?\u20917?\u65292?\u26174?\u28982?\u22914?\u26524?\u25226?\u26143?\u26399?\u20845?\u31227?\u21040?\u21069?\u38754?\u30340?\u35805?\u65292?\u38543?\u30528?\u24037?\u20316?\u26102?\u38388?\u30340?\u22686?\u38271?\u65292?\u22312?github\u19978?\u30340?\u20351?\u29992?\u22312?\u19979?\u38477?\u65292?\u20316?\u20026?\u19968?\u20010?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 a fulltime hacker who works best in the evening (around 8 pm).\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u19981?\u36807?\u36825?\u20010?\u26159?osrc\u30340?\u20998?\u26512?\u32467?\u26524?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 python github \u27599?\u21608?\u24773?\u20917?\u20998?\u26512?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u30475?\u19968?\u24352?\u20998?\u26512?\u21518?\u30340?\u32467?\u26524?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 {\pict\pngblip\picw844\pich438\picwgoal12260\pichgoal6360 89504e470d0a1a0a0000000d494844520000034c000001b608060000004c0b06e10000000473424954080808087c086488000000097048597300000f6100000f6101a83fa7690000200049444154789cecdd7b7ccee5ffc0f1d77d6fb323c3866dce739ce3cce6189b4d58ce9a952c7e7228613924f5951c561486282224426939554acc668ac46624c77288368631ec6087fbfafdf16977bbed1e5318dbfbf978ec71bbafebfa5c9febf3b977dbfdbeaf934e29a51042082184104208918fbea81b20841042082184108f2a099884104208218410a2001230092184104208214401246012420821841042880248c0248410420821841005908049082184104208210a2001931042082184104214400226218410420821842880044c420821841042085100099884104208218410a2001230092184104208214401246012420821841042880248c0248410420821841005908049082184104208210a2001931042082184104214400226218410420821842880044c420821841042085100099884104208218410a2001230092184104208214401246012420821841042880248c0248410420821841005908049082184104208210a2001931042082184104214400226218410420821842880044c420821841042085100099884104208218410a2001230092184104208214401246012420821841042880248c0248410420821841005908049082184104208210a2001931042082184104214400226218410420821842880044c420821841042085100099884104208218410a20012300921841042082144012460124208218410428802148b8029353595c99327d3a54b17ca972f8f5eafe7d34f3fcd57eefffeefffd0ebf5f97e3c3c3cccd6bb6cd9323c3c3cb0b5b5a56eddba7cf0c10766cb5dbb768d61c38651a142051c1c1cf0f7f7e7c0810366cbeedebd9b279e78027b7b7b5c5d5d79e59557484d4dfdf7172f84104208218478602c8bba01f7c3a54b97080b0ba37af5ea787a7a121d1d8d4ea7335bd6dada9a65cb9699a4393a3ae62bb778f162860f1f4e505010afbefa2a313131848686929696c66bafbd662c673018e8dab52b870e1de2b5d75ec3c9c989850b17e2e7e7476c6c2cb56bd736968d8f8f27202080860d1b3277ee5cce9d3bc7ecd9b33979f2245bb66cb94f774308218410420871bfe89452aaa81bf15f65666672edda352a56ac486c6c2c3e3e3eac58b1820103069894fbbffffb3fd6af5fcff5ebd7ef585f7a7a3a55ab56a54d9b366cdebcd998fefcf3cfb371e346ce9d3b47d9b2650158b76e1dcf3efb2c111111f4e9d30780cb972f53b76e5d02030359bd7ab5f1f8a79e7a8a43870e71ecd8311c1c1c00ad176be8d0a16cddba95279f7cf2bedc0f218410420821c4fd512c86e4952a558a8a152b0270b7f84f2985c160b863d0141515457272322fbffcb249fa881123484d4de5db6fbf35a6454444e0e2e2620c96009c9d9d090e0e66d3a64d6465650170fdfa75b66fdf4e484888315802183060000e0e0eac5bb7aef0172c84104208218478288ac590bc7b91969646993265484b4ba35cb972f4ebd78ff7de7b0f7b7b7b6399dcf947dedede26c77a7979a1d7eb898f8fa77ffffec6b25e5e5ef9cee3e3e3c392254b3871e2040d1b36e4d75f7f253b3b3b5f9d565656787a7a1638e7e9f2e5cb6cddba951a356a606b6bfb9fae5d0821841042145fe9e9e99c397386ce9d3be3ecec5cd4cd29364a54c0e4e6e6c6840913f0f2f2c26030f0dd77dfb170e1420e1e3c487474341616160024262662616191ef17ad54a952383939919090604c4b4c4cc4cfcf2fdfb95c5d5d01484848a061c3862426269aa4e7e5e2e2c28f3ffe68b6cd5bb76e252424e45f5daf104208218428793efbec33e397fbe2bf2b5101d3f4e9d34d9e07070753b76e5d264e9c48444404cf3cf30ca045e7a54a95325b87b5b535e9e9e9c6e7191919585b5be72b67636363ac2bef634165f3d69957cd9a3501ed17bfa0d5fcc4a367f4e8d1cc9b37afa89b21ee81bc668f1f79cd1e3ff29a3d7ee4357bbc1c3d7a94909010e3e747717f94a880c99c3163c63069d2242223238d0193adad2d99999966cb676464980c8db3b5b5e5d6ad5b66cbe5e6e77d2ca8ac9d9d9dd9f3e5065e1e1e1e6687fe894753d9b265e5f57accc86bf6f891d7ecf123afd9e3475eb3c753eee747717f148b451ffe0b1b1b1bca972f4f7272b231cdd5d5959c9c1c2e5fbe6c5236333393e4e464dcdcdc4ccae61da2972b77085e6ed9dca178b9e9b797cd5ba7104208218410e2d150e203a61b376e70f9f2652a54a8604c6bd6ac1900fbf6ed3329bb7fff7e0c06039e9e9ec6344f4f4fe2e2e2f2adceb777ef5eecededa95bb72e008d1a35c2d2d2325f9d999999c4c7c79bd4298410420821847834949880e9d6ad5bdcb871235f7a585818005dba7431a6f9fbfb53be7c79162d5a645276d1a245d8dbdbd3b56b57635a505010172f5e64fdfaf5c6b4cb972ff3e5975fd2bd7b77acacac006d73dc8e1d3bf2d9679f71f3e64d63d955ab56919a9a4adfbe7defcf850a218410420821ee9b623387e9830f3ee0dab56bc6e1719b376fe6cf3fff0420343494e4e4649a356bc673cf3d47bd7af5006d05baefbefb8ec0c0407af6ec69accbc6c686b0b030468c18417070309d3a7562d7ae5dac5ebd9ae9d3a71b37ad052d606ad5aa1583060de2c89123383939b170e14294524c9d3ad5a48defbcf30e6ddab4c1d7d797a1438772fefc79e6cc9943e7ce9de9d4a9d383be45e221ead7af5f513741dc2379cd1e3ff29a3d7ee4357bfcc86b2604e8d4dd767a7d4cd4ac5993b367cf02a0d3e9006d935a9d4ec7e9d3a771747464d4a851fcfcf3cf242424909393439d3a75e8dfbf3fafbefaaa7149f1bc962e5d4a787838a74f9fa65ab56a8c1c3992d0d0d07ce5ae5dbbc6f8f1e3d9b87123e9e9e9b468d182d9b3679b9d24f9d34f3f3161c204e2e2e22853a60cc1c1c1cc9831c3641fa8bce2e2e268debc39b1b1b132e952082184104214483e373e18c526602aaee4175f082184104214867c6e7c308acd903c218410423c9e4e9e3c69769eb110e21fa54b97a64e9d3a45dd8c1249022621841042149993274f1a57941542dcd989132724682a02123009218410a2c8e4f62c7df6d96778787814716b8478341d3d7a94909010e9892d22123009218410a2c8797878c89c0b21c423a9c4ecc32484104208218410f74a0226218410420821842880044c420821841042085100099884104208218410a2001230092184104208214401246012420821841042880248c02484104208f188983f7f3e0d1a34c0d6d616bd5ecffcf9f301d0ebf574e8d0a1885bf7785ab162057abd9e4f3ffdb4a89b221e53b20f9310420821c423e0f3cf3f67f4e8d17879793176ec58acadad69d5aa95315fa7d33db073fbf9f911131383c1607860e7286a0ff2fe89e24d0226218410428847c037df7c637c74717131c93b76ec187676760ff4fc125008619e044c42082184108f80848404743a5dbe6009a06eddba45d0222104c81c262184104288223565ca14f47a3dd1d1d128a5d0ebf5c69f5ce6e630e51eb773e74ed6ac5943cb962d717070a066cd9ac6329b376f262020005757576c6c6ca85cb9327e7e7e2c5ab408803367cea0d7eb898989c977eebbcd995abc78317abd9ea54b979aa47ff2c927e8f57aecededc9cccc34c96bd9b225b6b6b6dcba75cb247defdebd040505e1e2e282b5b535d5aa55e3a5975e223131d1ecb993939379e38d37f0f0f0c0cece8eb265cbd2b16347b66ddb76c736e775f5ea55dab76f8f858505efbdf75ea18f13258ff430092184104214a10e1d3aa0d3e958b1620567cf9e65ca942966cb1534642e3c3c9c6ddbb6d1a3470f0202024849490160c99225bcf4d24bb8babad2b3674f9c9d9d494a4ae2e0c183ac58b182e1c38753ae5c39264f9e6cf6dc356ad4b863bb3b76ec084064642443860c31a647464602909191c19e3d7bf0f5f50520252585d8d8587c7d7db1b6b636965fbe7c39c3860dc3d6d6961e3d7a50b56a554e9c38c1d2a54bf9faebaff9f9e79fa95ab5aab1fcd9b367f1f3f3e3ecd9b3b46fdf9ea79e7a8a9b376ff2cd37dfd0a54b17162f5e6cd21e73fefcf34fba74e9c2a953a758b56a15cf3df7dc1dcb8b924d0226218410423c76d2d2e0d8b1877fdefaf5e17e4f25f2f5f5c5d7d797a8a828fefcf34fde7aebad7b3a3e2a2a8a9f7ffe99a64d9b9aa42f5ebc186b6b6b0e1e3c88b3b3b3495e727232008e8e8e4c9e3cf95f9dbb56ad5a54ad5a951d3b7698a4efd8b1037f7f7fa2a3a3898c8c34064cd1d1d1180c06fcfdfd8d654f9c38c14b2fbd84bbbb3b3b77eec4d5d5d5a49e4e9d3af1ca2bafb07efd7a63fac081033977ee1c9f7ffe39c1c1c1c6f4949414fcfcfc080d0da5478f1e54ac58d16cbb0f1e3c48606020e9e9e96cd9b2c5a43d4298230193104208211e3bc78e41f3e60fffbcb1b1e0e5f5f0cf7b27c3860dcb172ce5b2b0b0c0d232ffc7bdf2e5cbdf9773070404b062c50a7efdf5571a376ecc912347b870e10293274fe6faf5eb444646326dda34e09f9ea7808000e3f18b162d223b3b9bf7df7fdf245802f0f7f7a77bf7ee7cfdf5d7a4a6a6626f6fcfc18307898989a16fdfbe26c11268c1df942953e8ddbb375f7df515c3870f37c9574ab16ddb369e7efa691c1d1d898989a171e3c6f7e53e88e24d0226218410423c76ead7d78297a238efa3a6458b1666d343424218376e1c0d1a34e0d9679fa57dfbf6b46ddb960a152adcb773fbfbfbb362c50a22232369dcb8b1b1b72920208053a74e3177ee5c63b0b363c70e4a972e6dd2de3d7bf6005aefd3debd7bf3d59f9494444e4e0e274e9ca059b366c6f2d7ae5d333b74f1d2a54b001c3d7a345f5e4444045bb76ea55ebd7a7cf7dd7754a952e53f5fbf2819246012420821c463c7ceeed1ebe9292ae656d5031833660ccecece2c5cb890f9f3e7336fde3c743a1dbebebecc9a358be6f7a18b2eb7b768c78e1d8c1e3d9ac8c848aa56ad4aeddab509080860d6ac59ecdcb9132f2f2f8e1c3942d7ae5d4d16b3b872e50a00b366cd2af01c3a9d8e9b376f9a94dfb66d5b810b3ce8743a525353f3a5efd9b387ecec6c5ab46821c192b827123009218410423cc6eeb47fd2f3cf3fcff3cf3f4f4a4a0abb77ef66c3860d2c5fbe9cce9d3b73ecd8b17c739bee95abab2b75ebd625262686cccc4ca2a3a3e9ddbb37004f3cf104a54a9562dbb66d5cbb760d20df7c21474747743a1d292929383838dcf57c8e8e8e00cc9f3f9f912347de535b67cc98c1b7df7ecb279f7c82528a65cb96c9de53a250645971218410428862ced1d191c0c040962c59c2fffddfff919c9c4c4c4c8c31dfc2c202d0e6f9dcab8e1d3b72fdfa75162e5c484a4a8ab1d7c9cece8e56ad5a1119196932542fafd6ad5ba3943269cb9db46edd1aa0d0e5f3b2b6b626222282be7dfbb262c50a424242c8c9c9b9e77a44c92301931042082144311415156536fde2c58b00d8dbdb1bd39c9c9c504a71f6ecd97b3e4f6eafd1bbefbe8b4ea733098afcfdfd397cf8305f7ffd35cecece3469d2c4e4d8912347626565c59831633879f264beba333333d9b56b97f179f3e6cd69d7ae1debd7afe7934f3e31db9e5f7ffdd53897e976969696ac5dbb96909010d6ae5dcb33cf3c437676f63d5fb3285964489e10420821c423e2dff4f014a477efde942e5d9a56ad5a51bd7a759452ecdab58bfdfbf7e3eded6ddc4709b45ea2888808faf4e943606020b6b6b6d4a85183909090bb9e27771fa9a4a4243c3c3c4ce6540504043065ca142e5dba44dfbe7df31d5baf5e3d962f5fce0b2fbc40c3860de9d2a50b75ead4212b2b8b3ffffc935dbb7651a952258e1c39623c66cd9a35f8fbfb3378f060e6cf9f4f8b162d285bb62ce7cf9fe7d0a143fcf6db6ffcfcf3cf052e6ea1d7ebf9f4d34fb1b1b161e9d2a5f4e9d3878888084a952a752fb7579420123009218410423c02743add3dcda9b95bf9f7de7b8fad5bb7121717c7962d5bb0b1b1a1468d1acc9c3993e1c3871b87e1010c193284b367cff2f9e79f336bd62cb2b3b3f1f3f32b54c054ae5c399a356bc6810307f2cd516ad9b225f6f6f6a4a5a515b8df51fffefd69dab429e1e1e1444545f1c30f3fe0e0e0809b9b1bc1c1c13cf3cc3326e52b57ae4c6c6c2c0b162ce0abafbe62cd9a35e4e4e4e0eaea4a83060d78e5955768d4a8d11def934ea763c99225d8d8d8f0c1071fd0b3674f366cd8808d8dcd5daf579440aa18b879f3a67aebadb754e7ce9d55b972e5944ea7532b56acb8e331999999cac3c343e9743a357bf66cb365962e5daaead7afaf6c6c6c549d3a75d482050bcc96bb7af5aa1a3a74a872767656f6f6f6aa43870e2a2e2ece6cd99f7efa49b56ddb56d9d9d929171717151a1aaa6edebc59603b63636315a0626363ef783d420821c4e348fece097177857d9fc8fbe9c1281673982e5dba44585818c78f1fc7d3d313b8f38a31000b162ce0dcb97305965dbc783143870ea571e3c67cf0c107b46edd9ad0d05066ce9c6952ce6030d0b56b57d6ae5d6bcc4f4a4ac2cfcf8fdf7fffdda46c7c7c3c0101016464643077ee5c860c19c292254bcc76510b2184104208218a5eb11892e7e6e6c6850b17a858b122b1b1b1f8f8f8dcb17c525212616161bcfefaeb4c9a34295f7e7a7a3a13274ea45bb76eac5bb70e80c18307633018080b0b63d8b061942d5b16d03641dbb3678f71dc2f4070703075ebd665f2e4c9ac5ebdda58effffef73f9c9c9c888e8e362e9d59a3460d860e1dcab66ddb78f2c927efcbfd10420821841042dc1fc5a287a954a95254ac581128dc64c9d75f7f9dfaf5ebd3bf7f7fb3f9515151242727f3f2cb2f9ba48f183182d4d454befdf65b635a4444042e2e2ec66009c0d9d999e0e060366dda4456561600d7af5f67fbf6ed84848498ec333060c0001c1c1c8c8199104208218410e2d1512c02a67bf1cb2fbfb072e54ae6cd9b57609903070e00e0eded6d92eee5e5855eaf273e3edea4ac9799adc67d7c7c484b4be3c4891380b6c465767676be3aadacacf0f4f4349e53082184104208f1e8281643f20a4b29c5a851a378f6d96769d9b22567ce9c315b2e3131110b0b8b7cbb5f972a550a2727271212124ccafaf9f9e5abc3d5d515808484041a366c486262a2497a5e2e2e2efcf8e38f776cfbe8d1a38dc30073f5ebd78f7efdfaddf138218428369482df7f875f7ef9e7c7d111de7a0bdab429ead60921c443b576ed5ad6ae5d6b9276eddab5226a4df156a202a6152b5670f8f061d6af5f7fc772e9e9e905aec56f6d6d4d7a7abaf179464606d6d6d6f9cae52e4b995b36f7b1a0b279eb3467debc79667bb28410a2d8ba7409f6ed83bd7bff09909293b5bcdab5a1450b387c18dab685a79e82b7df8666cd8ab6cd4208f19098fbe23c2e2e8ee6cd9b17518b8aaf1213305dbf7e9d37de7883d75e7b8dca952bdfb1acadad2d99999966f3323232b0b5b535297bebd62db3e572f3f33e1654d6ceceae7017228410c5517a3a1c38a00545b901d2a9535a9eb3b3161cbdf28af6d8a205942fafe5190cf0e5975a2f9397170405c1b469e0e15174d7228410a258293101d3ecd9b3c9caca223838d83814effcf9f30024272773e6cc192a57ae8c959515aeaeaee4e4e470f9f265936179999999242727e3e6e6664c7375753519a2972b77085e6ed9dca178b9e9b797cd5ba71042146b06031c3ffe4f60b4772f1c3a04d9d96063a3053e3d7a40cb965a7054b32614b455845e0fcf3c034f3f0dab56c1d4a9d0a8118484c0e4c9e0eefe70af4d082144b15362167d3877ee1c57af5ea561c386b8bbbbe3eeee4efbf6ed01983e7d3aeeeeee1c3d7a14c0b897d3be7dfb4cead8bf7f3f0683c1989f5b362e2e2edfea7c7bf7eec5dede9eba75eb02d0a851232c2d2df3d5999999497c7cbc499d420851ac2426c2a64df0bfff41c78e50ae1c3468002fbc00d1d1d0a409cc9f0fb1b170fd3afcf413cc9d0bcf3eab053c77d9570f004b4b1834480bc4e6cf871f7e807af5e0a597e0ef2fc7841042887fa3c4f430858686d2bb776f93b48b172ff2e28b2f3268d0207af6ec498d1a3500080808a07cf9f22c5ab488c0c04063f9458b16616f6f4fd7ae5d8d69414141444444b07efd7a9e7efa69002e5fbecc975f7e49f7eeddb1b2b202c0d1d1918e1d3bf2d9679f3169d224e3d2e2ab56ad2235355536af1542140f376f6a814fdea1757f6f128e8b8bd66bf4faeb5acf91b7b7b668c3fd646d0d234668c1d3871fc2bbefc28a15f0f2cbda79ffde824208218428ac6213307df0c1075cbb76cd383c6ef3e6cdfcf9e79f80162c356bd68c66b74d06ce1d9ad7b061437af4e8614cb7b1b1212c2c8c112346101c1c4ca74e9dd8b56b17ab57af66faf4e926abd5050505d1aa552b060d1ac491234770727262e1c28528a5983a75aac9f9de79e71ddab46983afaf2f43870ee5fcf9f3cc993387ce9d3bd3a953a707715b8410e2c1c9c981df7e330d8e0e1fd686dcd9d96901d1b3cffe33b4ae4a95c2f516dd0f7676307e3cbcf8a2d65b151e0e4b96c0e8d1f0eaab70dbaaa342082144418a4dc0141e1eced9b36701d0e9746cd8b081f5ebd7a3d3e91830600065ca94b9a7fa860f1f8e959515e1e1e16cdebc996ad5aa316fde3c4243434dcae9f57ab66cd9c2f8f1e3993f7f3ee9e9e9b468d182952b5752a74e1d93b2cd9a3563fbf6ed4c983081b163c752a64c19860c19c28c1933fedbc50b21c483a69436b42defbca3d858484dd5e611356aa40545a346698f0d1a68c3e48a5a9932da5ca6912361e64c983347eb791a3f1e424321cf46e242082184393a75fbe41bf148c95d1e32363656961517423c3c2929b07fbf698074e1829657b5ea3fbd462d5b6a8b343c2e81c7850b307d3a2c5eac0d077ce30d183e5c5b6c421409f93b27c4dd15f67d22efa707e311f8fa4f08214491cacad256a9cb3bb4eed831ad57a94c19f0f1d11668c85dd2dbcc06dc8f0d17176d518871e3202c4ceb690a0f874993b46bfc7bdea9b87f0ccac095b42b5cb879818ba91749cb4ac3c9d609673b679ced9c3128435137513c42ce9c3983bbbb3b03070ee4934f3e29eae6dc17c5f19a4a1a09988410a224510a4e9ffe2738dabb57dbff2823431b42d7b429f8f9c184095a7054af9e36e4aeb8a95e1d962e85d75e832953b45ea69933b57f3ff71c585814750b1f694a29526ea570e1e6052d10ba7951fb77ea6dcf6f5e202935891c9553605dbac48734af4d3c56740f6bbee343541cafa9a490804908218ab3e4642d38cadb7b74f9b296e7eeae0545c1c1dad03a4f4fc8b331778950b72eac59a30dcd9b3409060cd056d69b360dfaf479788b543c226e66de340976727b85ccfd3b33c77483771b4b1b5c1c5c707170a1927d255a546e61fcb731dda11276567624a7277339ed3297d32e131717c73b8bdf29a22b164288bb93804908218a8b5bb7203ede74ded1efbf6b79e5cb6bc1d1cb2f6bc1918f0f54a850b4ed7d94346e0c1b376af7edcd372128489b9bf5f6dbd0a5cb631d386564671883a082829fdcfcd4ac5493632df59626014fa38a8de8e8de1117fb7f02a0dcbcd2a54a17fa1b74170717e3bf6ba4d7e01d246012423cba2460124288c791c1a00543b9c3ea7ef9450b96b2b2a0542968d60c9e7aea9f85196ad57aac3ff43f342d5a689bdeeedc0913276af7b06d5b78e71df0f52dead61965e5647129ed92d92171797b882ea65ee45ac635936375e8a8685fd118f0d42e5f9b27aa3d61da13f4f7bfcbd99643af2b8643321f519b376fe6fdf7dfe7c891235cbd7a15272727ead4a9c333cf3cc3f0e1c34dca262727336bd62c366edcc8d9b3672955aa14dedede4c983081279f7cd26cfd5f7cf1054b962ce1c08103a4a7a7e3e2e242ebd6ad19376e1ccd9b373796bb75eb1673e7ce65f5ead59c3a750a4b4b4b9a366dcaa851a3f2ed1b99777ecee4c99379fdf5d7d9be7d3ba9a9a9346ad4882953a698ec5f99ebc68d1b4c9e3c9975ebd671e5ca156ad4a8c1b061c3e8d9b367a1efd7f1e3c7f1f0f0e0b9e79ee3b3cf3e33a69f3e7d9a5ab56a01101313c3134f3c61cc9b306102b366cd62c78e1df8f9f919d3cf9f3fcfbbefbecb962d5b484848c0c1c181b66ddb3269d224bcbdbdf39d3b3b3b9b254b96b072e54a8e1c39424e4e0ef5ead563f0e0c1bcfcf2cb85faf2c060303066cc18162c58409f3e7df8ecb3cfb09105681e4912300921c4e32029c97458dd2fbfc0b5bf3f08d7aba77dd01f38507b6cda540b9ac4bfe7eb0bbb76c1f7df6b3d4e7e7ef0e4935a8f538b160fe4940665e072dae57c018fb97f5f4ebb9ceff8f2b6e58d018f5b6937bc5cbdcc0e8973b673c6522f7ffe1f354b962ce1a5975ec2d5d5959e3d7be2ecec4c525212070f1e64c58a152601d3d9b367f1f3f3e3ecd9b3b46fdf9ea79e7a8a9b376ff2cd37dfd0a54b17162f5ecc9021438ce595520c1a3488952b5752a14205828282a850a102e7ce9d233a3a9afaf5eb1b03a6cccc4c3a77ee4c4c4c0c1e1e1e8c1c3992d4d45422222278e69967888f8fe79d77f2f7089e3d7b96962d5b52ab562d060e1cc8952b57f8e28b2fe8d9b327dbb76f37094e6eddba45404000fbf7efc7d3d393e79f7f9eab57af12161646747474a1ef59bd7af5a85cb93251515126e9919191803667283232d224608a8c8cc4d6d696366dda18d3e2e2e2e8d4a91357af5ea54b972e04050571e9d225366edcc8134f3cc1860d1b080c0c3496cfcacaa27bf7eefcf0c30fd4af5f9f9090106c6c6cd8b16307a3468d62efdebdac5cb9f28e6dcfc8c8a07ffffe6cd8b081912347327ffefc425fb778f8e47f4c218478d4a4a5415c9c6980f4f746db54aca8f5188d1ba73d7a7b43b97245dadc624ba783c0406d48defaf5f0d65bda3defd9539be3d4a4c95dab504a712de35aa186c3995b1ca18c75199380c7c3d9235f00e4e2e04245fb8a94b2285941725a561ac72e1f7be8e7adef5c1f3b2bbbfb5eefe2c58bb1b6b6e6e0c183383b3b9be42527279b3c1f387020e7ce9de3f3cf3f273838d8989e9292829f9f1fa1a1a1f4e8d1838a152b02f0f1c71fb372e54a5ab468c1b66ddb285dbab4f11883c140525292f1797878383131313cf5d4536cdebc19fddf8bbe4c9e3c99162d5a3063c60cba75eb46ebd6ad4dda141d1dcdd4a9539934699231edb9e79ea34b972ecc9a35cb24600a0f0f67fffefd3cfdf4d37cf9e597c6f4d75f7fdda4a7ab30fcfdfd59b56a15478e1ca1418306801614393b3b53a54a15222323993c79320057af5ee5c08103f8fbfb53eaef2f95b2b3b3090e0e262d2d8de8e868dab56b67ac7bfaf4e9f8f8f83078f060ce9c39633ce69d77dee1871f7e60d4a851cc9b37cfd89b64301818366c18cb972f272828881e3d7a986d737272323d7af460cf9e3dbcf7de7b8c1f3ffe9eae593c7c123009214451cac9d196f0ce3befe8d75fb5745b5b68de5c5b7ca0654beda75a35195af7b0e974f0f4d3d0ab17ac5d0b9327a33c3db9d9c80240530000200049444154bb2bc7473dc7d98aa5cc0e87cb0d8c6e5f1cc1d6d2d624e06959a5252ef6a6f3812ad957322e9020cc3b76f918cd97dcdb87ebfb2176582c5eae0f667f1b0b0b0b2ccd6cf85cbe7c79e3bf0f1e3c484c4c0c7dfbf6350996001c1d1d9932650abd7bf7e6abafbe32f64a2d58b0009d4ec7e2c58b4d822500bd5e8f8bcb3f73ca962f5f8e5eaf67ce9c39c66009a042850a4c9a3489214386b074e9d27c01538d1a3578f3cd374dd23a75ea44d5aa55d9b76f9f49fa279f7c828585053367cecc574768682853a74e2df01edd2e20208055ab56111919690c9876ecd84140400055ab56e5fdf7df273d3d1d5b5b5ba2a2a2504a111010603cfedb6fbfe5d4a9538c1f3fde24580270757565fcf8f18c193386c8c84802030331180c2c58b000575757e6ce9d6b32f44eafd7337bf66c3ef9e41356af5e6d36603a7bf62c5dba74e1f4e9d37cf6d967f4ebd7afd0d72a8a8e044c4208f130fdf59769cfd1fefd70e386f6a1bc41032d287ae925edb16143d917e821cabb38c2edbd40799f5ffebf449ed9a798b4fd1b3c377ec3c1a630b78325b7aab818039e26959ad0a956a77c73825c1c5c7028e520cb0bdf07f59deb133b2cb648cefb20848484306edc381a3468c0b3cf3e4bfbf6ed69dbb62d156e5b9c65cf9e3d005cbb768d2953a6e4abe7d2a54b001c3d7a1480d4d4547efbed375c5c5c68dab4e91ddb70e3c60dfef8e30faa54a942ddba75f3e5fbfbfb03101f1f9f2fcfd3d3d3ecef75d5aa55d9bb776fbe7354ab568d9a356be62bef7b8f730573db141919c9a851a3387cf830972e5d222020802a55aa307bf66c626262e8dcb9333b76ec303906feb99f67ce9c317b3f4f9e3c0968f73330309013274e70f5ea55ead4a9c3b469d3ccb6c9c6c6c678fff33a76ec18ad5bb7263d3d9defbefb8e0e1d3adcd3b58aa223019310423c28376e406cac69efd15f7f6979952b6b7361264ed41ebdbde1b66f7ec57f97959345526a5281c14fde217129b7524c8ed5ebf454b4af680c76ea94af43bb6aedb4e7bd5c3865551eab882806cd5fc60b1f5c4737ac97f67ae6f9b65e3c387656760faca7a7288c193306676767162e5cc8fcf9f38d43bd7c7d7d99356b9671a8da952b5700d8b66d1bdbb66d335b974ea72335555bf1f0dadf731d2b57ae7cd736a4a468ef01d70236a7ceed89caad33afb265cb9a3dc6d2d21283e19fcd8973cf51a952a53b9ea3b0aa54a942eddab5898989c1603018e72f05040450b16245acacac888c8ca473e7ce444646e2e8e8888f8f8ff1f8dcfb997768e0edf2decfdcf2274f9e2c3060ca5b3eaf13274e909c9c8ca7a727cd9a35bba7eb14454b02262184b81fb2b3e1f061d3dea3df7ed3368a7570d096f10e09d17a8e5ab4d00226f1af29a5389b729693574efe1308995921cedce2084eb64ec6de9e2a65aae0ede66d76489cb39d3316fabb6c60fb666718fd262c58a06d7cbb6c198c1aa56d88ebe4f480ae5e1457cf3fff3ccf3fff3c292929ecdebd9b0d1b36b07cf9723a77eeccb163c7707676c6d1d11180f9f3e73372e4c8bbd6991bc8fc95fb65cd1de4d67de1c205b3f989898926e5fe8ddc632f5ebc6836bfa073df89bfbf3f4b962c61dfbe7d44464652a3460d63ef55eebcadc4c4448e1f3f4ef7eedd4d7ac272dbb379f366ba75eb56e8f6f7e9d3878888887b6a678f1e3da85bb72efffbdfff08080860dbb66d26c32dc5a34b02262184b8574ac19f7f9af61cc5c6427a3a5858687bfab46d0b63c6680152fdfa5abaf8579452fc75e32ff627ec37f9b9927ec558c6d1dad124e06950a181d9e17015ed2b6265719f87393a38681bdf0e1f0ee1e130772e2c5a0463c76a3f65cadcdff38962cfd1d191c0c040e39c99e5cb97b36bd72e7af7ee6d9c3b14131353a880c9dede9e468d1a71f8f061e2e3e3f1f4f42cb06ce9d2a5a955ab16a74e9de2f7df7fa776edda26f9b9abd17979fdfb9ebdd2a54b53bb766d4e9d3ac5a953a770777737c9bf9755f27275ecd891254b96b075eb5676edda45505090312f202080b0b0303efffc73e3f3bcf2decfc2044c1e1e1e942d5b963d7bf6909d9d6d76ced99dbcfefaebd8dada3266cc18fcfcfcd8be7dbb71710ef10853e291161b1bab00151b1b5bd44d11a2e4ba7a55a91f7e502a2c4ca9eedd95aa5449292d6c52aa7a75a58283959a3d5ba95dbb944a4d2dead63ef62edcb8a0be39fe8d9a123545755bd34db9cc76514c41310555695625d56d4d3735357aaafaf6c4b7ea54f22995969956d44d369594a4d4d8b14a595b2b55bebc52efbd27bf1777207fe7343b76ec309bdead5b37a5d3e9d4f7df7f6f4c6bdfbebdb2b0b050cb972f377bcca1438754525292f1f9c71f7fac743a9d6ad1a2854a494931299b9393a31213138dcfa74f9fae743a9dead5ab97cac9c931a65fba7449d5a85143e9f57af5d34f3f19d34f9f3ead743a9d1a346890d9b6f8fafa2abd5e6f92967b8ea0a0206530188ce9a74e9d52e5ca95bb637de65cbe7c59e9f57a55a95225a5d3e9d4dab56b8d793b77ee543a9dce98f7ebafbf9a1c9b9595a56ad7aeadecececd4962d5bccd6bf7bf76e9596f6cfff336fbdf596d2e9746af8f0e12a3d3d3d5ff984840475e4c811e37373f7e8a38f3e527abd5ed5af5f5f252424dcf51a0bfb3e91f7d383213d4c4208915766261c3c683ab4eef8712dcfd1511b4e3774a8f6d8a20514300e5f144e727a32b109b1ec4bd867ec393a77fd1ca00d9df376f36670b3c1f8b8f9e0ede68d5b69b7477fc1840a15b49ea6b163b57d9b264ed47a9d264ed47e77acad8bba85e211d4bb776f4a972e4dab56ada85ebd3a4a2976eddac5fefdfbf1f6f6a663c78ec6b26bd6acc1dfdf9fc18307337ffe7c5ab46841d9b265397ffe3c870e1de2b7df7ee3e79f7f362e183164c81076eddac5aa55aba853a70e3d7af4a042850a242424101515c5e0c18379ebadb70078f5d557f9eebbefd8b469134d9b3625303090b4b434befcf24b2e5fbecc6bafbd66b287516128a54c9e8f1b378e8d1b37f2d5575fe1e5e545a74e9db876ed1a5f7ef925eddbb767f3e6cdf754bf9393134d9a34e1e0c183e8743a93451d5ab76e8dadad2d49494954ac5891468d1a991c6b6969c9faf5ebe9dcb9335dbb76a54d9b36346dda143b3b3bce9d3bc7be7dfb387dfa34172e5cc0d6d6168049932671f0e0413efae823befefa6b3a74e840e5ca95494a4ae2e4c993ecdebd9be9d3a7e3e1e151609b5f7cf1456c6c6c183c7830eddbb767c78e1d54ad5af59eae5b3c44451db1893b936f0a84784856ac50aa552bad570094b2b252cac747a91123945ab952a963c794caf36dabb8772919292aea74949af5d32c15fc65b0727fdfddd87354664619e5ffa9bf7a6ddb6b6adde175eaf4d5d326df3c3fd6fef843a9010394d2eb95aa564da965cb94caca2aea563d32e4ef9ce6a38f3e52bd7bf756eeeeeecacece4e952f5f5e797979a959b366a99b376fe62b7fe3c60d357dfa74d5bc7973e5e0e0a06c6d6d95bbbbbbead6ad9bfaf8e38f55aa995ecdd5ab572b5f5f5fe5e8e8a86c6c6c94bbbbbb0a090951070e1c3029979191a1a64f9fae1a356aa46c6d6d5599326554bb76edd4e79f7f9eafcebbf530f9f9f9e5eb61524aa9ebd7afabb163c7aaca952b2b1b1b1be5e1e1a1e6cc99a34e9d3a75cf3d4c4a29356edc38a5d3e954a3468df2e575eedc59e9f57af5ecb3cf16787c5252927afdf5d755a3468d949d9d9d7270705075ebd6557dfbf655ab57af56d9d9d9f98e59b56a950a080850e5cb9757a54a955255aa5451eddab5533366cc50e7cf9f3796bbd33d5abb76adb2b2b252356bd654a74f9f2eb07dd2c354b4744add16f68b474a5c5c1ccd9b37273636f63f8d191642dcc1c58b50bdba36efa8674f6dde51d3a6606353d42d7b6ca566a6127f219efd09fb8dbd47c7af683d75f656f678b97ae1ede66dfca95dbe367a9dfe2eb53ee68e1ed536bf8d8880ba7561ea54080e067d31bfeebb90bf7342dc5d61df27f27e7a3064489e10422c58009696da07d972e58aba358f9d8cec0c0e5d3c641c52b72f611f472e1dc1a00c585b58d3ccb5194fd67a92379e78036f376fea3bd7bffbea73c59187077cf9251c38006fbe09fdfac18c19101606ddbbcb86c44208f1889280490851b2ddb8011f7e08c38649b054085939591c4e3aac0547895a80f4ebc55fc9326461a9b7a449a526b4adda96575abe82b79b370d2b34bcffabd23dee9a35836fbf85ddbbb5794d3d7b6af3e1de790702022470124288478c044c4288926de952b879535b025c98c831e470f4f25193a5bce32fc4732be7167a9d9e86151ae253d98721cd86e0ede64de34a8db1b194618c85d6a60decd8a1fd4c9c084f3e09bebe5ae0d4b66d51b74e0821c4df24601242945c595930670e3cf71c94f0d5890ccac0efc9bfb3efaf7dc69ea3b8c438d2b2d2d0a1a39e733dbcddbc79aef17378bb79e3e9e2899d955d5137fbf1a7d369bd4afefef0cd37da50bd279e80c0406d853d9983208410454e02262144c9f5f9e770fe3cbcfa6a51b7e4a1524a71e6da19930519621363b97eeb3a00b5cad5c2dbcd9b9ef57ae2e3e64333d76694b196cd571f289d4e9bc7d4b5ab36cfe9adb7a0797378fa6998360d1a3428ea160a21448925019310a264520a66ce84a79e82c68d8bba350f8c528abf6efc65121ced4fd84f727a3200d51cabe1ede6cdeb6d5fc7dbcd9be66ecd296f5bbe885b5d82e9f5f0cc335aa0b46a95b6925ee3c6d0bf3f4c9902eeee45dd422184287124601242944cdf7f0f870fc3071f14754beeab8b372f9aac56b73f613f17532f02e0e2e0828f9b8f7141066f376f2ada572ce2160bb32c2d61d0206db8e8d2a5daf0bcb56b61f0606dd85e952a45dd422184283124601242944c33676a2b93b56f5fd42df9d7aea45d213631d624403a7ffd3c004eb64ef854f66168f3a178bb6ac1915b693774b202dbe3c5da1a468cd082a70f3f8477df85152be0e597e1f5d7a1a204bc4208f1a049c0248428797ef905a2a3b57d971e930022252385b8c438e372defbfedac7e96ba70170b476c4dbcd9bfe8dfb1b7b8eaa3b5697e0a838b1b383f1e3e1c51761ee5c080f87254b60f4686d0e5ed9b245dd42218428b68ac5f6e2a9a9a94c9e3c992e5dba50be7c79f47a3d9f7efa69be721f7ffc31bebebeb8b8b860636343f5ead5e9d7af1f478e1c315befb265cbf0f0f0c0d6d696ba75ebf241014377ae5dbbc6b061c3a850a1020e0e0ef8fbfb73e0c001b36577efdecd134f3c81bdbd3daeaeaebcf2ca2ba4a6a6fefb8b1742dcbb59b3a0766de8d5aba85b62566a662a3ffef923f37e9e47c8fa10ea7f509fb2ef95c57fa53f53774e25f14622bdeaf7624d9f359c187982e409c96c1fb09d773bbe4b5083206a94ad21c1527155a60c4c9e0ca74f6b3d4f73e640cd9ada52e4376f1675eb8410a2582a163d4c972e5d222c2c8cead5abe3e9e9497474b4d90f0bf1f1f1d4aa558b5ebd7a51ae5c394e9d3ac5c71f7fcc37df7c436c6c2c75ebd635965dbc7831c3870f27282888575f7d95989818424343494b4be3b5d75e339633180c74edda9543870ef1da6bafe1e4e4c4c2850bf1f3f323363696dab56b9b9c3f202080860d1b3277ee5cce9d3bc7ecd9b33979f2245bb66c79b0374908a1f9fd77f8ea2b58b4082c2c8aba3564646770e8e22193e5bc8f5c3a824119b0b1b4c1d3c593276b3dc9ffdafd0f6f376fea39d5c3425ff4ed1645ccc909de7b4fdb3f6cfa746d25bdf7df8737de80e1c3c146f6c3124288fba558044c6e6e6e5cb870818a152b121b1b8b8f8f8fd9721f7ef861beb45ebd7ae1ededcdead5ab993a752a00e9e9e94c9c38916eddbab16edd3a00060f1e8cc160202c2c8c61c38651f6efe10f111111ecd9b387888808faf4e9034070703075ebd665f2e4c9ac5ebdda78aefffdef7f383939111d1d8d83830300356ad460e8d0a16cdbb68d279f7cf2fedd14218479b36743850a3060c0433f75564e1687930e9bac56f76bd2af641bb2b1d25bd1a45213da566dcb2b2d5fc1c7cd8706151a606561f5d0db291e232e2e307f3e8c1b076161dab0bdf0709834095e7801ace4f7470821feab621130952a558a8a7f4f7c554addd3b1d5ab5707c02acf1f95a8a82892939379f9e5974dca8e183182d5ab57f3edb7dfd2bf7f7f400b985c5c5c8cc11280b3b333c1c1c17cf6d967646565616565c5f5ebd7d9be7d3b63c78e35064b0003060c60cc9831ac5bb74e0226211eb48b17b509f3932681aded033d558e2187a3978f9aac5677f0c2416ee5dcc2426741c38a0df176f366a8d750bcddbc6952a909d696d60fb44da218ab5e5d5b4defb5d7b4e5c7870fd716369932455b69ef11e84d154288c755b198c374afae5cb942525212fbf7ef67d0a04154aa548941830619f373e71f797b7b9b1ce7e5e5855eaf273e3edea4ac97999dd87d7c7c484b4be3c4891300fcfaebaf646767e7abd3caca0a4f4fcf02e73c0921eea3050bb4e59a6ffb32e4bf322803c72f1f67f5a1d58cd93a8627963f419977cbd07851635ed8f40251a7a3a8e7548f994fcee4a7177ee2fa1bd739f8d24196f558c6709fe1f854f6916049dc1f75ebc29a3570f0a0b67fd38001da634404180c45dd3af11f444747a3d7eb8da3610a63ca9429e8f57a76eedc79dfdae1e7e7875e5fbc3e3e16c76b12f757b1e861ba57952b57263333130077777776eedc49e5ca958df9898989585858e0ecec6c725ca952a5707272222121c1a4ac9f9f5fbe73b8baba0290909040c3860d494c4c3449cfcbc5c5851f7ffcf18e6d1e3d7ab4711860ae7efdfad1af5fbf3b1e2784f8dbcd9bdab2ccc38641b972ffba1aa514a7af9d3659ca3b3621961b993700a855ae163e957de85dbf37de6ede34736d4619eb32f7eb2a84289cc68d61e346d8b74fdbb7a96f5f68d64cdbcf2930f0b1591db2243973e60ceeeeee0c1c38904f3ef9a4c072f7b2a08b4ea733fedc4fc5715199c7e59a228e44a073d5d1b85263befce24bd6ae5d6b927feddab5226a59f1562203a6ad5bb7929191c1912347080f0fa753a74efcf8e38f54f97b23c0f4f4744a952a65f6586b6b6bd2d3d38dcf333232b0b6ceffcdb0cddf136e73cbe63e1654366f9de6cc9b37cf6c4f9610a290962ed582a6d1a30b7d88528af3d7cf1b97f2ce0d9292d39301a8e6580d6f376fe3820ccd5d9b53cef6df076342dc773e3eb0752bc4c4c0c489d0b52bb46dab054e66beec134527f703fbfdfce03e72e448faf5eb47d5aa55ef5b9da268cdfc692633fe9881ada52dcddd9ad36a542b5a566e49cbca2da952a60a070e1ca079f3e645ddcc62a744064cbebebe0074eedc999e3d7bd2a85123a64d9bc692254b00b0b5b535f640dd2e232303db3c731f6c6d6db975eb96d972b9f9791f0b2a6b6767f71fae480871475959daf2cbfdfa41b56a0516bb78f3a2c9820cfb13f67331f522002e0e2ef8b8f930bae5682d38726b4e457bd934543c26dab7d782a6ad5bb51ea70e1da063476d39f2162d8aba75827fe660dfeb5cec3b717272c2c9c9e9bed5278a5ecca0180c2e06f69edfcbdebff6b2eeb775ccde3d1b00570757ea67d52fe216164f257ec0a6bbbb3b9e9e9eecddbbd798e6eaea4a4e4e0e972f5f36299b9999497272326e6e6e2665f30ed1cb953b042fb76cee50bcdcf4dbcbe6ad5308719f7df1059c3ba7ad206686528a3e5ff4c125dc85ee6bbbf3e1be0fc951390c6d3e944dcf6ee2afb17f91382e91cdfd3633c977128175022558128f1f9d0eba74d186e97df515242440cb96d0b3271c3a54d4ad2bd1a64c9982bbbb3b009f7efa297abddef8636e5fc9f8f878ba76ed4ad9b265b1b7b7c7cfcf8f3d7bf698ad57afd71313136392aed7ebe9d0a103172f5e64c8902154ae5c194b4b4b93737dfef9e7346fde1c3b3b3b2a55aac4800103cc7edeb993d6ad5b636d6d4d5a5a9a49baafaf2f7abd9e21438698a41f3d7a14bd5ecfc081034dd2b3b3b359b87021ad5ab5a24c9932d8dbdbe3e5e5c5871f7e586080b977ef5e828282707171c1dada9a6ad5aaf1d24b2f99fd1c56901d3b76e0e8e848e5ca9539f488bc476c2c6d78a2da138c6b338e757dd77176f45912c626b0e1990d0cf41cc88d5b378aba89c55289ec61ba5d7a7a3a167956106ad6ac1900fbf6ed233030d098be7fff7e0c06039e9e9ec6344f4f4f76edda8552caa41b7defdebdd8dbdb1bf7766ad4a811969696ecdbb78fa0a02063b9cccc4ce2e3e379f6d9671fd8f50951a229a5ad161618a8cdeb3063e3b18d6c38b681799de7d1ab7e2faa39567b6cc6b30b71cf743ae8d3470b94d6aed536c2f5f484679e81a953b58523c443d5a1430752525278fffdf7f1f4f4a4579e4db5733f93e4dab76f1fefbdf71e6ddab461d8b0619c3d7b96afbefa8a808000e2e3e34df694bc93e4e4645ab56a45e9d2a5090a0a42afd7e3e2e202c0dcb97319376e1ce5ca9563e0c081942d5b96efbfff9eb66ddbe2e8e858e8ebead8b1237bf7ee65d7ae5d74eedc1980b4b4347efef967002223234dcae73eefd8b1a3312d2b2b8beeddbbf3c30f3f50bf7e7d424242b0b1b161c78e1d8c1a358abd7bf7b272e54a937a962f5fceb061c3b0b5b5a5478f1e54ad5a9513274eb074e952befefa6b7efef9e7bb0e535cbd7a352fbcf002b56bd7e6fbefbf7fa48735ba9676a557fd5e74a9d18b4617fa12820cc9bbef5431b36fdf3ea5d3e9d4a79f7e6a929e9d9dad929393f395dfbb77afb2b4b454a1a1a1c6b4f4f474e5e4e4a4ba77ef6e5236242444393838a8ab57af1ad3bef8e20ba5d3e95444448431edd2a54baa6cd9b2aa5fbf7e26c70706062a37373775e3c60d63dad2a54b954ea7535bb76e357b3db1b1b10a50b1b1b185b87a21443edf7da71428151565363b232b43d57abf96eabcaaf3c36d97108f8acc4ca5162f56aa4a15a52c2c947ae105a5ce9c7968a7ffd77fe75253958a8d7df83fa9a90fe43e9c397346e9743a3568d020b3f95151514aa7d399fd8cb378f162a5d3e9d4cb2fbf6c923e79f264a5d3e9d4ce9d3b4dd273eb193870a0cac9c931c93b7dfab4b2b2b2524e4e4eeaecd9b3c67483c1a09e7efa69a5d3e9945eaf2fd435edd8b143e9743a357efc7863daf7df7faf743a9dead4a993d2e974ea8f3ffe30e6f5ead54be9743a75fefcf97cd7101a1aaa0c0683313d2727470d1e3c58e9743ab569d32663faf1e3c795959595aa53a78e4a484830694f6464a4b2b0b050bd7bf73649f7f5f535b9a677df7d57e9f57ad5be7d7b93cf7c45e9f6f7c9c58b4afdf08352b36629d5bfbf528d1a696f5f90cf8d0f42b10998162c58a0c2c2c2d4f0e1c3954ea7534f3ffdb40a0b0b536161612a2525455dbd7a55d9dbdbabc18307abf0f070f5d1471fa9112346283b3b3b55a54a159598986852dfc2850b954ea7537dfbf6551f7ffcb11a306080d2e9746ac68c1926e572727254ebd6ad55e9d2a5d5b469d3d4871f7ea81a366ca81c1d1dd58913274ccac6c5c5291b1b1be5e5e5a5162d5aa4264e9ca86c6d6d55972e5d0abc2e099884f88ffcfc94f2f1512acf1fdabcc277872bfd54bd3a7cf1f0436e98108f98f474a5e6ce55aa4205a5acac941a3952a9db3e703e08fffaef5c6cacf665c8c3fe79407f8f4f9f3e5da880a95dbb76f9f2b2b2b294a5a5a5f2f1f13149bf53c0646363a32e5dba94afaeb7df7e5be9743a3565ca947c79a74e9d527abdbed00153464686b2b5b5555e5e5ec6b4f1e3c7ab52a54aa93d7bf6289d4ea7962c59a294d23e4f952d5b56d5ab57cf5836272747952f5f5eb9b9b9e50bec9452eaead5ab4aafd7abe0e06063dae8d1a3954ea7535bb66c31dba65ebd7a294b4b4b75f3e64d635a6ec0643018d4881123944ea753414141ead6ad5b85bace8721f77dd2a64dac7275fde7d7d1de5ea9d6ad951a3e5ca98f3e526ac50af9dcf820149b2179e1e1e19c3d7b16d05698d9b06103ebd7af47a7d33160c0005c5d5d193a7428515151444444909e9e4ed5aa5579e1851778f3cd37a954a992497dc3870fc7caca8af0f070366fde4cb56ad598376f1ea1a1a126e5f47a3d5bb66c61fcf8f1cc9f3f9ff4f4745ab468c1ca952ba953a78e49d966cd9ab17dfb76264c98c0d8b1632953a60c43860c61c68c190ff6e6085152fdf20b4447c3975f9a5d46f972da65a6ed9cc6b0e6c36858b1e1c36f9f108f121b1b6d15c92143b43dcb66ce8465cb60e4489830011eb5c503ead787d8d8a2396f11ba7d3f47004b4b4b2a55aac4d5ab570b5d4f8d1a35f26d9f0210171707fcb340565e356bd6a46ad5aa9c3b77ae50e7b0b6b6a675ebd644474773f5ea55ca952bc78e1d3bf0f1f1a155ab5654aa5489c8c848860e1d4a5c5c1c29292926dba59c387182ab57af52a74e1da64d9b66f61c3636361c3d7ad4f83c772e577474b4c9fcf45c494949e4e4e470fcf87193d5879552f4e9d3874d9b36111a1acabc79f30a758d0f9b8505bcf082368ab66953a8550bf26e21f5f7cb27eeb36213309d3e7dfaae65e6ce9d7b4f750e193224df844473ca962dcbc71f7fccc71f7f7cd7b26ddbb6bdeb9e4b4288fb64d62ca85d1b7af7369b3d257a0a0ac5343ff37f888528911c1ce08d3760f870080f87b973e1a38f60ec58eda7cc23b2af989d1d94c0ed366edf933197a5a52539393985ae2777bed2ed52525200f27d919cf7b8c2064ca0cd478a8a8a222a2a8a0e1d3a101f1fcfc48913016dee56eebca5dcc7808000e3b157ae5c01e0e4c99305064c3a9d8ed4d4d47cc7cc9a35abc036dd7e4cae5dbb7661696949b76edd0a7d7d0fdbbc7925f2d7bec895f855f28410c5d4efbf6b2b81bdfaaaf695dc6d8e5c3ac247fb3fe2cd766f52c1be4211345088475cd9b2101606a74fc3d0a1f0eebb50b3a6d6f374dbaa67e2f153d0c236b98b3a5cbc78d16cfe850b17eee93cfefefe006cdbb68da8a8280c06833128f2f7f7e7d2a54b1c3c7890c8c848e3ea7db7b7a54f9f3e180c06b33f393939fcf1c71f26c7e8743aae5fbf7ec763dab56b97ef7e44474753ae5c397af4e8c177df7d774fd7298a3709988410c553783854a800030698cd7ef58757a9e6588dd096a166f385107fab50417b3ffdf10704076b1be0d6aa051f7c0066f61614ff4eee6abdf7d24bf420e46e7a1a1d1d9d2fefd4a953f7d4bb04da10c23265ca101919c98e1d3bb0b5b5a575ebd6c03fbd495bb66ce1a79f7ea2499326942f5fde78ac87870765cb9665cf9e3d64676717ea7cad5bb74629956f29f5c268d4a8113b77eea45cb972f4eedd9b4d9b36dd731da2789280490851fc5cbc089f7c02a1a19067a3e95c5b7fdfca77bf7fc7cc2767626d695d040d14e23154b9322c5a04c78f43a74ef0ca2bda12e4cb9641213fcc8a82952b570ec0381fbba8f4efdf1f2b2b2b162c5860d21683c1c0f8f1e3ef79635d0b0b0bdab76fcfefbfff4e444404eddab5c3caca0ad0e63d362384000020004944415444d5a85183f7df7f9ff4f474636f54de63478d1a45626222a1a1a1646464e4ab3f3131d1640ed3c89123b1b2b262cc98319c3c79325ff9cccc4c76edda55607bebd7af4f4c4c0c952a55a26fdfbeac5bb7ee9eae57144f123009218a9f0f3e004b4b6d0ec66db20dd98cfb611cedaab5e3698fa78ba071423ce6dcdde1d34fe1f06168d1425b24a241036d4f2783a1a85bf7d8727070a055ab56ecdab58b909010a64e9dcadb6fbfcdafbffefa50db51bd7a75de7df75dae5ebd4ab366cd183e7c3813264cc0cbcb8b03070ed0a449937b0e9a727b929292924ce628e5e62525259994cb6bd2a449f4e8d1838f3efa883a75ea3060c000de78e30d060f1e4cfbf6eda95ab52a5f7ffdb5b17cbd7af558be7c3967ce9ca161c386f4e8d18371e3c6111a1a4aaf5ebd707575e5c5175fcc779ebcd754ab562d76edda45b56ad5e8dfbf3fab56adbaa7eb15c58f044c4288e2e5e64df8f0436dce459ea11db996c62de5b74bbf31a7f31cd99c5688ffc2c3435b81322e0eead481e79ed396eedab4495bf158dcb355ab56d1b56b57befffe7ba64d9bc6e4c9933970e040a18e35f7ff994ea7fb57ffcf8d193386356bd650b3664d56ac58c18a152b68d2a409bb77efa65cb972f75c676e20a4d3e9f2f522e5e6595959d1be7dfb7cc75a5a5ab271e34656ae5c49bd7af5f8f6db6f9933670e3ffcf003006fbffd36fdfbf73739a67ffffec4c6c6d2bf7f7f0e1d3ac4871f7ec89a356b3875ea14c1c1c12c5cb8d0a4bcb9fb54ad5a35626262a85dbb362fbcf002cb962dbba76b16c58b4eddebd704e2a18a8b8ba379f3e6c4c6c69a2c7f298428c0fbefc3b87170ea1454ab6692959291429d057508ac13c8a7bd3e2da2060a514ceddeadcd6f8a8ed67a9ede7e1b3a7634bba47f5ef2774e88bb2becfb44de4f0f86f43009218a8fac2c983307faf5cb172c01ffcfde9d875555ed7f1c7f1f90491c0107d4ca1c4873b838de32cba91c52bb9548615e6fe6d0cf21a7944a2b33536f385626a969991a397633b59c4dcd5201294b4bcdd454520831996438fbf7c78e23478e530287e1f37a9ef3a06b2fd6fa6e1c9ef33d6bedef62f2aec924a52731b9fd6427042752ccb56a055bb7c2e6cd6692d4b123b46b075f7fedecc844446e89122611293e962d83932761cc985c978e9d3fc6ac6f67117a5f28d5cb55774270222580c5021d3ac037dfc09a3570fe3cb46e0d0f3fac133545a4c852c22422c5836198e7c374e9028d1be7bafcc2e617f02bedc79856b9932911c963160b74ef0efbf7c3279f9825c99b3583a0203878d0d9d18988dc14254c22523c6cd800070e406868ae4b3b4fec64e5c1954ce930056f776f2704275242b9b8c0134fc08f3fc2c2851019096ddbeafc2611295294308948f11016062d5a409b3676cd56c3caa88da368e6df8cde8d7b3b29389112ae5429e8dbd73cc369c306f0d0f967225274947276002222b76cdf3ed8b6cd2c717c4545aea5df2f25f24c243b9ede818b459f1189389587073469e2f052cec34745c49efe7d389712261129faa64e85dab5e1b1c7ec9a93d3937969cb4bf4a8df83fbefb8df49c189c8b5942d5b1680debdb5022c723dd9ff5ea46029611291a2ede85158b5ca3cacd6d5d5eed2b4ddd3884b8923eca13027052722d753b76e5d0e1f3eccc58b179d1d8adc82b434b3b6c7e1c3f6af9414f37ac58a70d75d101070f975c71de66e4db93165cb96a56eddbace0ea344d25f531129da66cc005f5ff8cf7fec9a4fff799ab0dd610cffe7706a55ace5a4e044e446e84d60d1f2fbef101303df7d67be6262ccc7d3ac56b3cec75d77c13ffe014f3e697e0d0c84aa559d1db5c8dfa78449448aae73e7e0830f60dc38f0f2b2bb346eeb384abb9566dcfde39c149c8848d19491010909101f6fbe4e9db24f8ece9d33fb952d6b2644eddbc3a851e6af1b3480d2a59d1bbf485e53c2242245d73bef98dbf0060fb66b8e3a13c5a2ef1631e7e13994f72cefa4e044449c2f2bcb3c3f383bf9b991d7850bb9c7b9e30e3321fabfffbbbc6a54b3a6b9a22452dc29611291a22929c97c6e69c000f0f1b1351b86c1c80d236950a901039a0d706280222279cb6a3593991b497afef8c3fc9a90609eeb9d93c562feb7e9e777f9d5b0a1fdeffdfcccddce7e7e50a50a942be79c7b16290c94308948d1b46001fcf9278c1c69d7bcfad06a769edcc9974f7d492917fd172722859361c0c58bd74f78ae6ccbcaca3d56850af6894e40c0e564c7d1ab62c55c357244e41af46e42448a9e8c0cb3d8434808dc7ebbadf952e625423787d2b94e673ad5e9e4c40045a424310cb31adcf5129e2b5f1919b9c72a53c63eb9b9fd7668daf4eac98f8f0fb8b915fc3d8b94244a9844a4e859be1c4e9e843163ec9adfd9fb0e27124ff079c8e74e0a4c448a83b4b41b4b7872bed2d2728fe3e909952a5d4e6eaa5675bcf52de716380f8f82bf5f11b936254c2252b41806848541e7ced0b8b1ad392e398e893b26f26cf367b9bbd2dd4e0c50440a938c8c9b4f7e9293738fe3ee9e3bc10908c8fdbc4fce97aac589140f4a9844a468d9b811beff1e66cdb26b1ebf7d3c162c4c683bc1498189487ecbcab22f777d23450f1c557c7375cd9de8dc71c7d5577efcfcccad72164bc1dfb388389f122611295ac2c2a0797368dbd6d6f4e3b91f991b3597b007c3f02bede7bcd844e48659ad90987873450fce9fbfb18a6f8d1a5d3bf929574ee5b045e4c629611291a2233212b66e359f61caf151efe84da3b9b3c29d0c6d39d489c189146d5959e6733879f1ba74e9ead792922e2744566bee381c557c6bd5eaeac94f850aaaf82622f9ab58244cc9c9c9848585b167cf1ef6eedd4b6262221f7cf001fff9cf7f6c7d0cc360d1a245ac5ebd9a989818121212b8f3ce3b79f2c927193d7a341e0e9eb25cb06001d3a64de3f8f1e3dc76db6d0c1b368ca14373bf214b4c4c243434944f3ffd94d4d4545ab66cc9f4e9d369d2a449aebebb77ef26343494fdfbf753ae5c39828383993c7932dedede79fb4311298ec2c2a0562d78fc715bd39747bfe4cba35fb22a78151ea5f4b4b4144d860199997f3f09c98bc42633f3e6e37677370b1b5cef55b1e2e55f972ead8a6f2252b4148b84292e2e8e89132772c71d77101818c8f6eddbb15cb1d138393999679e79867befbd9741830651b9726576efdecdf8f1e3d9b2650b5bb76eb5eb3f77ee5c060d1a44505010a3478f66c78e1d0c1b368c9494144243436dfdac562b5dbb76e5fbefbf273434145f5f5fe6cc9943dbb66d898a8aa24e9d3ab6be31313174e8d081060d1a3073e64c7efbed37a64d9bc691234758bf7e7dfefe90448abaa34761d52a983ddbf67172a63593e7373e4f9b3bdaf058bdc79c1ca0146586611607c8efd5956bbd1cadb65c8f87c78d252c7e7e37d62ffb7523e37a78685b9b88940cc52261aa56ad1abffffe3b952b57262a2a8a162d5ae4eae3e1e1c1eeddbbb9e79e7b6c6dfdfaf5a366cd9ab6a4a943870e00a4a6a6326edc38ba75ebc6f2e5cb6d7dad562b13274e64e0c08154a8500180952b57f2cd37dfb072e54a1effeb53efe0e060020202183f7e3c4b972eb5cd3776ec587c7d7dd9be7d3b65ca9401a066cd9a0c1830804d9b36f1d0430fe5cf0f48a4389831c37c3afbe9a76d4df3a3e67328ee108b072ecef52189146f2929f0d55770f870de2537573e1b7323bcbc6e2ce12857eee612961b4956dcdd95b088881484629130b9bbbb53b97265c0dc7ae7889b9b9b5db294edd1471f65fcf8f1fcf4d34fb68469dbb66d2424243078f060bbbe43860c61e9d2a5ac5bb78ea79e7a0a3013a6aa55abda9225003f3f3f82838359b26409191919b8b9b9f1e79f7fb279f366468d1a654b9600faf4e9c3c8912359be7cb9122691ab39770e3ef800c68d33dfa102896989bcbafd55fafca30f4dfd9b3a39402908478ec0faf5f0c51766b2949676798bd7b5928bd2a5cdad5e7f6715e55a2f3737554d131129098a45c2742b7efffd77c04c72b2eddfbf1f80e6cd9bdbf56ddab4292e2e2ec4c4c4d812a6fdfbf7d3b469ee376b2d5ab460debc791c3e7c98060d1a70e0c001323333738de9e6e6466060a06d4e117160f66cf3a3f41c1f624cda3989948c14267798ecc4c0243fa5a4c0f6ed6682f4c517f0cb2fe6aaca030fc0a449d0a50bd4aba7a4454444f257894f98c2c2c2285fbe3c5dba74b1b5c5c6c6e2eaea6a974481b992e5ebebcb993367ecfab6cd51de389bbfbf3f0067ce9ca1418306c4c6c6dab5e754b56a5576edda75cd38478c1861db06982d2424849090906bdfa04851979464264c030698cb04c02f09bff0d6b76ff1f2032f53ad6c3527072879c530cc55a4ec0469fb7673cb5ccd9a6672d4a50bb46b679e87232252d245444410111161d7969898e8a4688ab7129d304d9e3c992d5bb6101e1e4eb972e56ceda9a9a9b8bbbb3bfc1e0f0f0f5253536dbf4f4b4b735861cfd3d3d33656ceaf57eb9b734c4766cd9ae570254ba4d85bb810fefc13468eb435856e0ea5b2776546b71aedc4c0242fa4a4c0b66d9793a463c72eaf224d9e0c0f3f0c77dda5552411912b39fae03c3a3a9a66cd9a3929a2e2abc4264ccb962de395575ea17ffffe3cfbecb376d7bcbcbc484f4f77f87d69696978fdf50c4576df4b972e39ec977d3de7d7abf52d5dbaf4dfbb1191e22c2303a64f87279f843bee0060c7891dac3eb49a8f1efd88d26efa7753d4e45c455abfde7c1649ab482222529895c88469d3a64df4e9d3876eddbaf1de7befe5baeeefef4f565616f1f1f176dbf2d2d3d3494848a05ab56a767d736ed1cb96bd052fbb6ff656bcecf62bfbe61c5344feb262059c3c0963c6006035ac8cda308ae6d59af354e3a79c1c9cdca8abad22b5690353a698499256914444a4b02a710549f7ecd9c3638f3d46cb962d59be7c392e0e6ab2661f38bb6fdf3ebbf6c8c848ac562b818181b6b6c0c040a2a3a37355e7dbb3670fdedede04040400d0b061434a952a956bccf4f474626262ecc61411cca588b030e8d409fef10f00167fb798a8d82866769a898ba5c4fdf755641806fcfc33cc9a65fef1f9f840b76eb06e9df9fbcf3f878404d8b8d1dc69a9c20d2222529895a8771c870e1da26bd7aed4aa558bb56bd73a7c9e08a07dfbf6f8f8f8101e1e6ed71e1e1e8eb7b7375dbb76b5b505050571f6ec5956af5e6d6b8b8f8f67c58a1574efde1db7bf8e2c2f5fbe3c0f3ef8204b962c212929c9d677f1e2c5242727d3b367cfbcbc5591a26fe346f8ee3bf8eba0e8e4f464c66e1d4bcfbb7bd2faf6d64e0e4eae9492622644438640edda6612f4c20b66f234650a1c3a64ae2ccd9963264fdedece8e584444e4c6149b2d79b367cf263131d1b63d6ecd9a359c3c79128061c38661b158e8d4a913898989848686f2f9e79fdb7d7f9d3a756ce734797a7a3271e244860c19427070301d3b7664e7ce9d2c5dba94c99327db55ab0b0a0ae29e7beea16fdfbe1c3c78105f5f5fe6cc998361184c9830c16e8e499326d1aa552bdab469c38001033875ea143366cca053a74e74ecd8313f7f3c22454f5818346f6e3ed0024cdd3d95f89478de7cf04d270726602642870f5fde6697fd2cd29d77da3f8ba4c44844448a3ca398a859b3a661b1580c8bc562b8b8b8182e2e2eb65f9f3871c2f8f5d75f6dbfcfee97f3d5b76fdf5c63ce9f3fdfa857af9ee1e1e161d4ad5bd778ebadb71cce7dfefc79a37ffffe869f9f9fe1eded6db46bd7ce888a8a72d877d7ae5dc67df7dd677879791955aa54319e7bee39232929e9aaf71515156500571d4fa458dab7cf30c030962f370cc3307ebbf09be1f5869711ba29d4c981956c494986f1f9e7863178b061dc79a7f947e4ee6e181d3b1ac6cc9986f1d34f8661b53a3b4a1191924bef1bf387c530ae78f8460a95ecf2905151512a2b2e25c7134f4064a4b984e1ea4a9f4ffbf0e5d12f393aec28e53cca5dfffb254f64af22ad5f6fae22edd8a155241191c24cef1bf347b1d9922722c5c42fbfc0ca95e661b5aeaeec3bbd8fc5df2fe6bdaeef29592a00c9c9f615ed7efd153c3ccc8a76fffdaf99240504a848838888941c4a9844a4709931037c7de1e9a7310c83511b47d1b07243fa35ede7ecc88aa5ec8a76399f454a4f875ab5cc4363bb7481b66db58a2422222597122611293ce2e260e142183b16bcbc58757025bb4eee6243ef0d9472d17f5779253919b66ebd9c241d3f7e7915e9cd37cd44a96e5dad2289888880122611294c66cf061717183c98b4cc34423785f270dd87e9585b55246fc5b55691ba76bdfc2c52e9d2ce8e544444a4f051c22422854372b29930f5ef0fbebebcfd7518272f9c645daf75ce8eac48bada2a52dbb666c5f62e5db48a242222722394308948e1b060015cb8002347722ef91c93764e62508b41d4af54dfd991150986013ffd743941dab1e3f22a52b76e979f45d22a928888c8cd51c22422ce979101d3a7c3934f42cd9a8c5f37080b16c6b719efecc80ab5ec55a4f5ebe1cb2fb58a242222921f94308988f3ad5801274fc29831fc70ee07e645cd63ea4353f12bede7ecc80a95abad22d5aead5524111191fca28449449ccb30cce5904e9d301a37e6f9a59da955b116435b0e75766485425292fdb348274e80a7a799184d9d7a791549444444f28712261171ae4d9be0bbef60c60cbe38fa051b7fd9c8a74f7c8abbabbbb323738aec55a4f5ebcd0469e7cecbab48ddbb9b25bfdbb4d12a928888484151c22422ce151606cd9a91f1406b9e9ffb0fdad66ccbbfeefa97b3a32a505a4512111129bc94308988f34445c1962db06c19f3a2e7f373fccf7cfcf8c7588a799502c38043872e2748d9ab4875eac0238f5c7e16c9cbcbd9918a888888122611719ea953a1562dce7769c7f8f0fa3c1df8344dfc9b383baa7c919464e686d949d2c993e62a52bb76306d9a9924d5a9e3ec28454444e44a4a9844c4397ef9c5ac8ef7ce3bbcf1cd7f49cb4c6352fb49ce8e2acf5cb98ab46387593dbd4e1df8d7bfb48a242222525428611211e79831037c7cf8e591fb79e78311bcdae655fccbfa3b3baa5b72ad55a4e9d3b58a242222521429611291821717070b17c2d8b18cf97a3c55ca5461d4bda39c1dd54d330c3878d0fe59a48c0cb340c3a38f9a09529b365a4512111129ca94308948c19b3d1b5c5cd8d5ad319fae7995258f2da1b45bd1a8937df1a259d16efd7af8f2cbcbab48eddb9b8b665dba9825c0454444a47850c22422052b391966cfc6daaf1fc3f64ea065f59684340a71765457a55524111191924d09938814ac850be1c2055677be9dfdfbf6f3f5335fe36271717654762e5eb47f16e9b7dfcc84a85d3bad2289888894344a9844a4e06466c2f4e964f4ecc1b04333086e104cabdb5a393b2ac04c8a962d33b7daedda65ae220504c0e38f9b09d2030f6815494444a42452c224220567c50a387182f9e33a92703681371f7cd3d9110170ee1cb46c09172e681549444444ec296112918261181016466afb07187d6e0923ef1d49cd0a359d1d15562b3cfdb4f9f5d831a85ad5d911898888486152b81e1c1091e26bf366888961e6fd6e94f528cb4bad5f72764400bcfdb6f99cd2a2454a964444442437ad308948c178f34d921bd5631c5b98d76e1ee53cca393b22a2a32134149e7f1e3a77767634222222521869854944f25f54146cd9c29badac34aad288679a3ce3ec88484a82901068dc18264f7676342222225258158b8429393999f1e3c7d3b973677c7c7c70717161d1a245b9faedddbb97c18307d3ac5933dcdcdc7071b9f6ed2f58b080faf5ebe3e5e545404000b367cf76d82f31319181030752a95225ca942943fbf6edd9bf7fbfc3bebb77efa675ebd6787b7be3efefcff0e1c3494e4ebef99b16294aa64e25a94615265739cc8c4e337075717576440c1b06a74f434404b8bb3b3b1a11111129ac8a45c2141717c7c48913f9f9e79f090c0c04c062b1e4eab77efd7a162c5880abab2bb56bd776d827dbdcb973193060008d1a3562f6ecd9dc7befbd0c1b368cb0b030bb7e56ab95ae5dbb12111161bb7eeedc39dab66dcbd1a347edfac6c4c4d0a14307d2d2d298397326fdfbf767debc79f4ecd9330f7e0a2285d4b163182b56f0e63d1974a9d78d076b3de8ec888888800f3e803973cc036845444444aeca28062e5dba649c3d7bd6300cc3888c8c342c168bb168d1a25cfdce9e3d6ba4a5a51986611843860c312c168bc3f15252520c5f5f5fa37bf7ee76edbd7bf736ca9429639c3f7fded6b66cd932c362b118ab56adb2b5c5c5c519152b56347af5ea65f7fd5dba7431aa57af6e5cbc78d1d6f6fefbef1b168bc5d8b871a3c358a2a2a20cc0888a8abad68f40a4f01a32c4482eef6d947dd9d5f829ee27674763fcf28b61942b6718bd7a1986d5eaec68444444f28ede37e68f62b1c2e4eeee4ee5ca9501300ce3aafd2a57ae8c8787c775c7dbb66d1b0909090c1e3cd8ae7dc89021242727b36edd3a5bdbca952ba95ab52a8f3ffeb8adcdcfcf8fe0e0603efbec3332323200f8f3cf3fd9bc7933bd7bf7a64c9932b6be7dfaf4a14c99322c5fbefcc66e56a428898bc358b890992d3278bad560eef2bbcba9e1646440af5ee0eb0be1e1708d456611111111a0986cc9cb6bd9cf1f356fdedcaebd69d3a6b8b8b810131363d7b769d3a6b9c668d1a2052929291c3e7c188003070e909999996b4c373737020303affacc934891f6eebba45b335878af17e3db8c7776348c1f6fd69f88888072ce2fd2272222224580ca8a3b101b1b8babab2b7e7e7e76edeeeeeef8fafa72e6cc19bbbe6ddbb6cd3586bfbf3f0067ce9ca1418306c4c6c6dab5e754b56a5576edda75cd98468c1841850a15ecda424242080909b9a17b122970c9c964bef316f3023379eee1d7f02dedebd470b66c81fffe17a64c817ffed3a9a1888888dcb2888808222222ecda1213139d144df1a684c981d4d454dcaf5236cbc3c383d4d454dbefd3d2d21c6ef3f3f4f4b48d95f3ebd5fae61cd39159b366395cc91229ac8c850bb1245e6075e79a6c6831f8fadf908fe2e2e0dfff860e1d60cc18a78622222292271c7d701e1d1d4db366cd9c1451f1a584c9012f2f2fd2d3d31d5e4b4b4bc3cbcbcbaeefa54b971cf6cbbe9ef3ebd5fa962e5dfa96e31629343233497d7312ff6b6030e2c959b8bb3aaf6eb761c033cf98cf2f7df4115ce73401111111113b7aebe080bfbf3f595959c4c7c7dbb5a7a7a793909040b56ad5ecfae6dca2972d7b0b5e76dfecad78d9ed57f6cd39a6485197b9ec134a9f3ecbf6a0e63c72d7234e8d65f66c58bb16162d02073b6245444444ae490993034d9a340160dfbe7d76ed91919158ad56db594f00818181444747e7aaceb767cf1ebcbdbd09080800a061c386942a552ad798e9e9e9c4c4c4d88d2952a41906e75f7f910db561f0c0f9d73cef2cbf7df71d8c1e0d2346c0c30f3b2d0c11111129c2943039d0be7d7b7c7c7c080f0fb76b0f0f0fc7dbdb9bae5dbbdada828282387bf62cab57afb6b5c5c7c7b362c50aba77ef8e9b9b1b00e5cb97e7c1071f64c99225242525d9fa2e5ebc98e4e4641d5e2bc5c6c5759f52e9f0690efca70b81559df7414072323cf924dc7db759ec41444444e4ef2836cf30cd9e3d9bc4c444dbf6b8356bd670f2e44900860d1b46b972e53871e2048b172f06ccd52280499326611806356bd6a477efde80598461e2c4890c193284e0e0603a76ecc8ce9d3b59ba742993274fb6ab56171414c43df7dc43dfbe7d3978f020bebebecc993307c330983061825d8c93264da255ab56b469d38601030670ead42966cc9841a74e9de8d8b163beff8c440ac29957479252cd85de231638358e1123e0e449888e861b387e4d444444c431e79e9b9b776ad6ac69582c16c362b1182e2e2e868b8b8bedd7274e9c300cc330b66ddbe6b08fc56231dab56b976bccf9f3e71bf5ead5333c3c3c8cba75eb1a6fbdf596c3b9cf9f3f6ff4efdfdff0f3f333bcbdbd8d76edda5df584e55dbb7619f7dd779fe1e5e56554a952c578eeb9e78ca4a4a4abde974e6c96a2e4c4964f0d038c55e39f706a1ccb96190618c682054e0d434444a440e97d63feb018c6150fdf48a1925d1e322a2a4a65c5a5d0db715f0d6afef43b954e9dc7cbabac5362387e1c0203a17367f3805a273e4225222252a0f4be317fe8192611c913dfecf898fbbe39cdb9fffbb7d392a5cc4ce8d50b2a5684f7de53b224222222b7aed83cc32422ce9365cde2f8f8e1d4f72e45b3b1b39d16c78409b0772fecdc09391e3514111111f9dbb4c22422b76cd9f6d9fcebeb782e0ef80f166f6fa7c4b07d3b4c9a04afbf0ef7deeb9410444444a41852c22422b7e4e2a58b9c79f3655c2daedc36d639f5bbfff8037af786b66de185179c128288888814534a9844e496ccd83c91a7772571e9e97f839f5f81cf6f18d0af1fa4a5c1e2c5e0ea5ae0218888884831a6679844e46f3b79e12489efcda4629a05d797c63b2586f070f8ec3358b306aa57774a08222222528c69854944feb6711b5f60e4d756ac3d83a066cd029fffc00118350a9e7b0eba772ff0e9454444a404d00a9388fc2d7b4eed2163f927dc7e1e78e1a5029f3f25059e7c12eeba0bc2c20a7c7a1111112921943089c84d330c83915f8e60c11e2f8c87eec3d2a44981c7306a14fcfa2b444682a767814f2f2222222584122611b969cb7f5c4ee99ddf52ff376061c197a55bb50ae6ce8579f3e0eebb0b7c7a1111112941943089c84d49cb4ce385cd2ff0e9fe4ad0a40674e850a0f39f3c09fdfb435090f955444444243f296112919b32f39b9954fef9144d0e6441c4db60b114d8dc9999f0d45350ae9cb9ba5480538b88884809a58449446ed8ef49bf3379d764b61faa0d776698cb3c0568d224d8bd1b76ec808a150b746a11111129a1943089c80d7b65db2bd44e74a1e9cea3f0f6db50aae0fe0bd9b9135e7f1d5e7b0deebbafc0a615111191124e099388dc90ef7eff8e05d10bd8ff6b6b2c150f42dfbe0536774282b915af756b183bb6c0a615111111d1c1b522727d8661f0fcc6e769e1518bc66b23cd93624b972ea0b961c000484e86a54bc1d5b540a61511111101943089c80d587b782d5b7eddc247a75b62011832a4c0e69e370f56af86050ba0468d029b564444440450c22422d7919e95cee84da379b85a5b02223642bf7ee0e7572073fff8238c18018306c1a38f16c8942222222276943089c835bd17f91e47fe38c2bc3feec572fe3c8c1a5520f3a6a6c2934f42edda307d7a814c29222222928b8a3e88c85525a426f0daf6d718f08fbe541ff5090407c39d7716c8dca347c3d1a3b06f1f787915c89422222222b928611291ab7afdabd7c9b066f0e68596f0eb4258b9b240e6fddfff60ce1c080f87860d0b644a1111111187b4254f441cfa39fe67deddf72e63ef7b890a6fcd85071f84a64df37dde53a7ccc7a41e7b0c9e7d36dfa7131125949e4b00002000494441541111b926ad30898843a19b43a95eb63acfa706c2fe71b07163becf999505bd7b9b15cbdf7f1f2c967c9f52444444e49a943089482e5b7fddca9a9fd7f0498f4f701f350b9a34315798f2d99429b073276cdb063e3ef93e9d888888c875296112113b59d62c466e18c9bd35ee2538bd2e6cda041111f9bedcf3f5d7f0da6bf0ca2bf0c003f93a95888888c80d2b16cf30252727337efc783a77ee8c8f8f0f2e2e2e2c5ab4c861df43870ed1b97367ca962d8bafaf2f7dfaf4213e3ede61df050b1650bf7e7dbcbcbc08080860f6ecd90efb2526263270e0402a55aa4499326568dfbe3dfbf7ef77d877f7eeddb46edd1a6f6f6ffcfdfd193e7c38c9c9c97fefc645f2c107311ff0fdd9ef99d969269669d3a0664d080acad7391313a1572fb8f75e78f9e57c9d4a444444e4a6148b84292e2e8e891327f2f3cf3f1318180880c5c1a7e1a74e9de281071ee0d8b1634c993285d1a347b36edd3a1e7ae821323232ecface9d3b97010306d0a8512366cf9ecdbdf7decbb061c3080b0bb3eb67b55ae9dab52b111111b6ebe7ce9da36ddbb61c3d7ad4ae6f4c4c0c1d3a74202d2d8d993367d2bf7f7fe6cd9b47cf9e3df3f82722f2f75cbc749197b7be4caf46bdf867466558be1c9e7f1e4ae5df62b461c0c081f0e79fb07469be4e2522222272f38c62e0d2a54bc6d9b3670dc3308cc8c848c362b1188b162dcad56fd0a04186b7b7b7f1db6fbfd9da366fde6c582c1663debc79b6b6949414c3d7d7d7e8debdbbddf7f7eedddb2853a68c71fefc795bdbb265cb0c8bc562ac5ab5cad61617176754ac58d1e8d5ab97ddf777e9d2c5a85ebdba71f1e2455bdbfbefbf6f582c1663e3c68d0eef2d2a2aca008ca8a8a81bf95188dc92b15bc61a9e6f781a27124f18c673cf1986afaf612425e5eb9cf3e71b0618c68a15f93a8d888848b1a7f78df9a358ac30b9bbbb53b97265000cc3b86abf55ab56d1ad5b376ad4a8616bebd0a1030101012c5fbedcd6b66ddb36121212183c78b0ddf70f193284e4e464d6ad5b676b5bb9722555ab56e5f1c71fb7b5f9f9f9111c1ccc679f7d665bb9faf3cf3fd9bc7933bd7bf7a64c9932b6be7dfaf4a14c993276f38b38c389c4134cdf3d9de7ef7d9edb33fe2a53377428787be7db9c870ec1b061e60a533eeffa13111111f95b8a45c274234e9f3e4d5c5c1ccd9b37cf75ad458b1676cf1c65fffacabe4d9b36c5c5c585989818bbbe4d1d9c4dd3a2450b525252387cf83000070e1c20333333d7986e6e6e0406065ef599279182f2e29617a9e85591175bbf689e1a0b306448becd9796064f3e693e22357366be4d23222222724b4accd302b1b1b100f8fbfbe7bae6efef4f424202191919b8b9b9111b1b8babab2b7e7e7e76fddcddddf1f5f5e5cc993376e3b66ddbd6e1980067ce9ca1418306d79cbf6ad5aaecdab5eb9af18f1831820a152ad8b585848410121272cdef13b911dffcf60d9ffcf0090b1e5940994c1778e71d78e619a85429dfe60c0d859f7f86bd7bcd7397444444e4c645444410111161d7969898e8a4688ab7129330a5a6a602e0e1e191eb9aa7a7a7ad8f9b9b1ba9a9a9b8bbbb3b1cc7c3c3c33616405a5ada75c7bc91f9738ee9c8ac59b31cae6489dc2ac33018b96124815503f9cf3ffe03e1ef4142028c1a956f737efeb99993cd9e0d8d1be7db34222222c596a30fcea3a3a369d6ac9993222abe4a4cc2e4e5e505c0a54b97725d4b4b4bb3ebe3e5e5457a7abac371d2d2d26cfdb2fbdee898d79abfb43e621727f9e4874fd8737a0f5bfb6cc5d56ac0f4e9101c0cb56ae5cb7c67ce40dfbef0c82370c5638222222222854e897986297b2b5cf6d6b89c626363f1f5f5c5cdcdcdd6372b2b2bd7f94ce9e9e924242450ad5a35bb71736ed1cb392660eb7bbdf9738e2952505233527961f30bfcebae7fd1eece76b06a15fcfa2b8c19932ff3656541efdee0e9090b17e6fb59b822222222b7acc4244cd5ab57a752a54aecdbb72fd7b5bd7bf7dace6f0268d2a40940aebe91919158ad56bbbe818181444747e7aaceb767cf1ebcbdbd09080800a061c386942a552ad798e9e9e9c4c4c4d88d295250667c3383df937e67ea4353cd0391c2c2e0c107219fb67f8685c1f6edb06409f8fae6cb142222222279aac4244c003d7af460eddab59c3a75cad6b665cb168e1c396277786cfbf6edf1f1f1213c3cdceefbc3c3c3f1f6f6a66bd7aeb6b6a0a020ce9e3dcbead5ab6d6df1f1f1ac58b182eeddbbdb56adca972fcf830f3ec892254b484a4ab2f55dbc7831c9c9c93abc560adcef49bf3365d71486b61c4a5ddfbab0752b44479bd518f2c1b7dfc22bafc0d8b1e0a04e8a88888848a1546c9e619a3d7b36898989b6ed716bd6ace1e4c993000c1b368c72e5ca3176ec5856ac5841bb76ed183e7c38172f5e64ead4a9346edc98be7dfbdac6f2f4f464e2c4890c193284e0e0603a76ecc8ce9d3b59ba742993274fb6ab56171414c43df7dc43dfbe7d3978f020bebebecc993307c330983061825d8c93264da255ab56b469d38601030670ead42966cc9841a74e9de8d8b16301fc94442e7b79ebcb7894f2e095075e311bc2c22030d05c61ca63172e404808b46c09e3c7e7f9f022222222f9c7b9e7e6e69d9a356b1a168bc5b0582c868b8b8be1e2e262fbf58913276cfd7efcf147a353a74e86b7b7b7e1e3e363fcfbdfff36ce9d3be770ccf9f3e71bf5ead5333c3c3c8cba75eb1a6fbdf596c37ee7cf9f37faf7ef6ff8f9f919dedede46bb76edae7ac2f2ae5dbb8cfbeebbcff0f2f232aa54a9623cf7dc73465252d255ef4b27364b7ed81fbbdfb0bc6631defef6edbf1af61b0618c6c71fe7f95c56ab613cf18461942b6718bffe9ae7c38b8888c85ff4be317f580ce38a876fa450c92e0f191515a5b2e292270cc3a0c3471d884d8ae5fbfffb1e37573778ea29f8fa6b387a144ae5edc2f3071f98473a7df2093cf1449e0e2d22222239e87d63fe28365bf244e4c67c7ef873b61ddfc6da90b566b274fc382c5b063367e679b2f4f3cf307428f4eba764494444448aa61255f441a4a44bcf4a67f4c6d13c54eb211eaefbb0d938630654a8602e03e5a14b97cce7966ebb0dde7a2b4f871611111129305a61122941e6ec9bc32fe77f6155f02a2c160bc4c7c3fbef9b95f1bcbdf374ae975e821f7f843d7bf27c681111119102a38449a484f823e50f267c3581fe4dfbd3a84a23b371ce1cf3eb9021793ad7faf5e60ebfb7de320bef898888881455da922752424cf86a0259d62c5e6ffbbad9909202efbc636ec5ab5429cfe6898d85a79f86ae5de1b9e7f26c5811111111a750c2245202fc14ff1373f6cd61dcfde3a852a68ad9f8e187909000a346e5d93c562bf4e963d68ef8e003b058f26c6811111111a7d0963c911260cca631dc56fe3686df33dc6cc8cc84e9d3a1674fa8552bcfe699360db66c814d9bf274d14a444444c46994308914739b8f6d66ede1b52c0b5a8667294fb371f56a38760c962fcfb379f6ee8571e3e08517a043873c1b56444444c4a9b4254fa418cbb266316ac328eebbed3e7adeddd36c340c080b33b39a66cdf2649e3fff344b88376d0aafbf9e27438a888888140a5a611229c616ee5fc8817307d8db7faf59461c60eb56888a820d1bf2640ec3804183202ecedc8ae7e69627c38a888888140a4a98448aa93f2ffdc9cbdb5ea677e3deb4a8dee2f285b030b3d6f7430fe5c93c8b17c3c71f9baf3c7c1c4a444444a45050c224524c4dd935858b972e32b9fde4cb8d3131b071a399dde44109bb2347cc239c9e7edadc922722222252dce819269162e878e271667e3393d1ad46735bf9db2e5f983a15eeb8c3ac8e778bd2d3cd24c9dfdf3cce49444444a438d20a934831f4e2e617f1f1f221f4bed0cb8dc78fc3b2653073a67950d22d1a370ebeff1ebefd16ca94b9e5e1444444440a25254c22c5cceedf76b3ecc7657cf0af0f28e39e2393993913ca9787679eb9e539366c30cf5c9a31c3ac8c27222222525c694b9e48316235ac8cdc309226559bd0e71f7d2e5ff8e30f78ff7d183a14bcbd6f698eb367a14f1fe8dc19860fbfc580454444440a39ad30891423110722d87b7a2fdbffb31d174b8ecf43e6cc01abd54c986e81d50afff98f592fe2c30fc1451fb98888884831a78449a49848c948e1c52d2ff258bdc76853b3cde50ba9a9f0f6dbe656bc4a956e698e9933cded781b3640952ab718b08888884811a0cf87458a8919dfcce06cd259c21e0ab3bff0c107909000a346ddd2f89191f0d24b30660c74ec784b438988888814194a98448a813317cff0df5dffe5b97f3e471d9f3a972f6466c2f4e9101404b56bffedf12f5e344b88ffe31ff0c61b7910b08888884811a12d7922c5c0cb5b5fc6b39427af3cf08afd85d5abe1d83158befc96c67fee39f8fd77f8e20b7077bfa5a1444444448a14254c22455c746c341fc67cc83b5ddea1826785cb170c03c2c2a0430768d6ec6f8fbf74292c5a048b17439d3ad7ef2f222222529c28611229c20cc3e0f98dcf53cfaf1ecf367fd6fee2b66d1015655668f89b7ef905060d827fff1b7af7bec560454444448a20254c2245d8673f7fc6f6e3db59df6b3da55caef8e71c16663e74f4d0437f6becf474f3b9a52a55e0dd77f3205811111191224809934811959e95ce984d63e858bb239deb74b6bff8dd77e6cad2d2a5e6a1497fc3abafc2fefdb07b37942d9b07018b888888144125ae4a5e5454149d3b77a67cf9f2942b578e4e9d3af1dd77df39ec7be8d0213a77ee4cd9b265f1f5f5a54f9f3ec4c7c73becbb60c102ead7af8f979717010101cc9e3ddb61bfc4c444060e1c48a54a952853a60ceddbb767fffefd79767f5272ccde3b9b63e78f31bde3742c57264553a7c21d7740cf9e7f6bec4d9be0cd3761f26468d1220f821511111129a24a54c2141d1d4debd6ad397efc38afbdf61aafbefa2a478e1ca14d9b361c3e7cd8aeefa953a778e081073876ec1853a64c61f4e8d1ac5bb78e871e7a888c8c0cbbbe73e7ce65c08001346ad488d9b36773efbdf7326cd830c2c2eccfc3b15aad74edda95888808dbf573e7ced1b66d5b8e1e3d9aeff72fc5477c4a3caf7ff53a039b0da461e586f6174f9c804f3e31cf5d7273bbe9b1cf9d833e7dcc9d7ccf3f9f47018b88888814554609f2f0c30f1bbebebe46424282ad2d3636d6285bb6acd1a3470fbbbe83060d32bcbdbd8ddf7efbcdd6b679f366c362b118f3e6cdb3b5a5a4a418bebebe46f7eeddedbebf77efde469932658cf3e7cfdbda962d5b66582c1663d5aa55b6b6b8b838a362c58a46af5ebd1cc61c15156500465454d4dfbb69299686ae1f6a949b52ce389b7436f7c5e1c30dc3c7c73092926e7adcac2cc3e8d2c5302a55328cd8d83c08544444440a8cde37e68f12b5c2b473e74e1e7cf0412a56ac686bab5ab52a0f3cf0006bd7ae253939d9d6be6ad52aba75eb468d1a356c6d1d3a7420202080e539ceb4d9b66d1b0909090c1e3cd86eae214386909c9cccba75eb6c6d2b57aea46ad5aa3cfef8e3b6363f3f3f828383f9ecb3cf72ad5c89387228ee10e1fbc21977ff382a7b57b6bff8c71f307f3e0c1902dede373df6db6f9b672d2d5a0455abe651c0222222224558894a98d2d3d3f1f2f2cad55eba7469d2d3d3f9e1871f00387dfa34717171346fde3c57df162d5ad83d7394fdeb2bfb366dda14171717626262ecfa366ddad4e198292929b9b6058a38327ad3686e2f7f3bc3ff393cf7c53973c06a85a1436f7adcfdfb2134d4dcc9d7a54b1e042a222222520c94a82a7977dd7517df7cf30d56ab15171733574c4f4f67cf9e3d009c39730680d8d85800fcfdfd738de1efef4f424202191919b8b9b9111b1b8babab2b7e7e7e76fddcddddf1f5f5b58d993d6edbb66d1d8e993d7f83060d1cc63e62c4082a54a860d7161212424848c88ddcba14131b7fd9c8fa23eb59d173051ea53cec2fa6a69a4b44cf3c03952b3b1ee02a9292e0c927a15123b3d083888888146e111111444444d8b52526263a299ae2ad44254c83070f66d0a041f4ebd78fd0d050b2b2b278e38d37f8fdf7df01484d4db5fbeae1e1916b0c4f4f4f5b1f37373752535371777777389f8787876d2c80b4b4b4eb8e7935b366cd72b83a252547a63593e7373e4febdb5bd3a37e8fdc1d3efc101212cc25a29b347c389c3e0dd1d1e0e0afa888888814328e3e388f8e8ea659b3664e8aa8f82a515bf29e7df659c68e1dcbc71f7f4c83060d68dcb831bffefa2ba1a1a10094295306c0b66defd2a54bb9c6484b4bb3ebe3e5e5457a7abac3f9d2d2d2ecb6007a7979ddd098228e2c885ec00fe77e6046c719b9cb886765c1b469101404b56bdfd4b89f7c020b179a87d30604e461c022222222c540894a9800de78e30dce9e3dcbae5dbb3870e0007bf6ec212b2b0b8080bfde2d666f91cbde9a97536c6c2cbebebeb8fd55aed9dfdf9facacac5ce733a5a7a793909040b56ad56c6dfefefe765bf4728e09d8f515c9e942da055ed9f60aff6efc6f5a54777030d2ead570ec188c197353e3fefa2b3cfb2c848498a5c445444444c45e894b98002a54a840ab56ad6ccf0b6ddebc99db6ebb8d7af5ea0150bd7a752a55aac4be7dfb727defdebd7b090c0cb4fdbe49932600b9fa46464662b55aedfa060606121d1d8d6118767df7ecd983b7b7b72d6113b9d2945d53484a4f627207070f18198679ca6cfbf6e0a050c9d5646440af5ee0eb0be1e170e5a2958888888894d08429a765cb96111919c9881123ecda7bf4e8c1dab56b3975ea94ad6dcb962d1c3972849e3d7bdadadab76f8f8f8f0fe1e1e176df1f1e1e8eb7b7375dbb76b5b505050571f6ec5956af5e6d6b8b8f8f67c58a1574efdeddb66a2592d3afe77f65e6b73309bd2f941ae56ae4eeb07d3b44459925ee6ec26baf416424444440f9f27912aa88888848b153a28a3eecd8b183d75f7f9d4e9d3ae1e3e3c3b7df7ecb871f7e48972e5d183edcbe44f3d8b16359b16205eddab563f8f0e15cbc7891a953a7d2b87163faf6ed6bebe7e9e9c9c4891319326408c1c1c174ecd8919d3b77b274e952264f9e6c57d92e2828887beeb987be7dfb72f0e0417c7d7d9933670e86613061c28402fb3948d1f2c2e617f02bedc7985657d96e1716068d1b43c78e373ce6d6ad30658a5911ef9fffcca340454444448aa1129530d5a8518352a54a3175ea542e5ebc48ad5ab598346912a3468db29519cfd9f7abafbe62d4a851bcf8e28b787878d0ad5b37a64f9f9e6b2568d0a041b8b9b9317dfa74d6ac59c3edb7dfceac59b318366c985d3f171717d6af5fcf98316378fbedb7494d4da565cb967cf4d147d4ad5b37dfef5f8a9e5d2777b1e2e00a3efcd78778bb3b3888f6bbefe0cb2f61c9921bde53171f0fbd7b9b3bf86e72514a444444a4c4b118573e5023854a7679c8a8a82895152f61ac86957fbeff4f0cc360ef80bdb8581ceca0eddd1b76ee84a347e106b6741a06fceb5ff0cd3766aea53a23222222c587de37e68f12b5c22452947c7ce06322cf44b2e3e91d8e93a51327cc9ae03366dc50b20466e9f0cf3f87b56b952c89888888dc88125ff441a4304ac948e1a52d2fd1a37e0feebfe37ec79d66ce34ab35f4eb7743637ef71d8c1e6d1e529ba31689888888885c831226914268daee699c4b3ec79b0fbee9b8c31f7fc0fcf9306408783b78b6e90ac9c9f0e49350bfbe59815c444444446e8cb6e4891432a7ff3ccd9b5fbfc9b07f0ea3b64f6dc79dc2c3c16a85a1436f68cc9123e1e449b3fab887471e062b22222252cc29611229645edef632a5dd4af3f2fd2f3bee909a0a6fbf0d7dfb42e5cad71d6fc50a7331eafdf7e1afb39945444444e4062961122944a263a35914b388771f7e97f29e57394d76d122734bdea851d71defc4091830008283e19967f23858111111911240cf3089141286613072c348ea57aacf8066031c77caca8269d3a0470fa853e79ae3656642af5e50a102cc9d7bc3c73489888888480e5a611229243efde953769cd8c1174f7d412997abfcd35cbd1a7ef9052222ae3bdeebafc39e3db06387993489888888c8cd53c22452085ccabc44e8a6503ad7e94ce73a9d1d77320cb3c45dbb76d0a2c535c7dbbe1dde7803264e8456adf23e5e11111191924209934821307bef6c8e271e674dc89aab77dabedd2c73f7e597d71ceb8f3fa0776f68d3065e7c316fe3141111112969f40c938893c525c73171c7449e6dfe2c7757bafbea1dc3c2a07163e8d8f1aa5d0c03faf7370be92d5902aeaef910b08888884809a2152611277bedabd7ccaf6d5ebb7aa7efbf375796962cb966f586f7de83fffd0f3efb0caa57cfdb38454444444a22254c4544878f3ad0e440131a556944a3cae6ab41e50694712fe3ecd0e4161c8c3bc8dcc8b9fcf7c1ff52c9bbd2d53b4e9d0ab7df6ed607bf8a0307cc036a870e85471ec98760454444444a20254c45c413773f41bc573c5f1efd92d97b676335ac00dc59e14ebb24aa519546d4f5a98b9bab9b9323961b317ae3686a56a8c9732d9fbb7aa71327ccaa78d3a7839be33fd79414080981800033b71211111191bca184a98818d87c204d9b360520352395837107f9e1dc0f1c38778003e70eb070ff4262936201707775a79e5f3dbb24aa51e546d42857038b0ee32934361cddc01747bf6055f02a3c4a795cbde3ac5950ae1cf4eb77d52ecf3f0fc78e416424787ae643b022222222259412a622c8cbcd8b66d59ad1ac5a33bbf63f52feb04ba20e9c3dc09a9fd77031fd2200e53dcad3b07243bb15a986951b52d1aba2336ea344cbb466326ae3281eb8e3011eabf7d8d53b2624c0fcf9e65ebb328eb75fae5e6d3ebb34772edc7d8d9a112222222272f394301523bea57d6953b30d6d6ab6b1b51986c1890b27cc44eaac9948ed3ab98bf7a3df27d39a09408d7235cc442ac78a547dbffad75ef5905b323f6a3e87e20eb16fc0be6baffacd99039999f09ce32d7b274f9a0b4f3d7ac08001f914ac8888884809a684a998b3582cd4ac50939a156ad22da09bad3d3d2b9d9fe37fb65b915afee372a6ee361f8071b5b852d7b76eae6d7d7756bc13178baad1df8a0b69177875fbabf4f9479f5cab84765253e1edb7a16f5fa85c39d7e5cc4cf3bca5b265cd4528edb614111111c97b4a984a287757773309aad28810426ced7f5efa931fcefd7039913a7b80597b6691909a004069b7d234a8d42057a189cadeb9dfd08b6393764e2225238549ed275dbbe3a245e629b4cf3fef789c49f0f5d7f0d5575051bb2a45444444f2851226b153cea31cad6e6b45abdb5ad9da0cc3203629d66e5b5fccef317c7ce063d232d300a8ec5d39d7b6be06951ae0edeeedac5b29948e9d3fc65b7bde626cebb1542f778d8392b2b260da3473af5d9d3ab92eefda05afbf0ee3c743ebd6f918b08888884809a78449aecb62b150ad6c35aa95ad46c7da1d6ded59d62c8e261cb5dbd6b7fec87adedef3360606162cdc59f14ebb2d7d8d2a37a2ae6f5d4ab994ccbf7aa19b42a954ba12a35b8dbe76c74f3f855f7e31cb895fe1fc79e8d5cb4c94c68dcba740454444440450c224b7c0d5c595bbfceee22ebfbbe871770f5b7b4a460a87e20ed955eb7b3ffa7d7e4ffa1d30b703d6f7ab9f6b5b5ff5b2d58b75d9f39d2776b2ead02a3e7af4a36bafbc1906848541bb76d0a245ae4b03064052122c5902aeaef91cb48888884809a78449f25c69b7d20ecb9ec7a7c4db6deb3b70ee00fffbe97f24a5270150c1b342ae6d7d0d2b37a482670567dc469eb21a56466e1849f36acd79aaf153d7eefcd557b06f1f7cf145ae4bf3e7c3aa556629f1db6ecba76045444444c44609931418bfd27eb4add996b635dbdadaac869593174eda25513b4eec607ef47cbbb2e7576eebabe757af48953d5ff2fd12a262a3d8d977e7f5ab0c868541a346d0a9935df38f3fc2f0e1f07fff078f5de3e82611111111c93b4a98c4a95c2c2eb6b2e7ddefea6e6bcf2e7b9e735bdf273f7c42d88530c02c7b1ee01b906b5b5fcd0a350b5dd9f3e4f4645edaf212417707d1faf6eb5468f8fe7b736569f162bb3ae1a9a9101202b56bc38c19f91cb088888888d894b88429323292891327b26fdf3e2e5cb8c0edb7df4eaf5ebd183d7a345e5e5eb67e870e1d62e4c8917cfdf5d7b8bbbbd3b56b5766cc98819f9f5fae31172c58c0b469d3387efc38b7dd761bc3860d63e8d0a1b9fa252626121a1acaa79f7e4a6a6a2a2d5bb664faf4e93469d2245fefb928ca59f63ca70b6917f831ee47bb15a94dbf6ce27cda7900bcddbc6950b941aef3a32a795772c66d00306df734e253e279f3c1376fa0f33473afdd134fd8358f1903478e983bf572fc3515111111917c56a212a603070ed0ba756baa55abc6881123f0f1f161f7eedd8c1f3f9ea8a828fef7bfff0170ead4291e78e0012a56acc8942953b878f122d3a64de3c08103ecddbb17373737db9873e7ce65d0a041040505317af46876ecd8c1b061c3484949213434d4d6cf6ab5d2b56b57befffe7b424343f1f5f565ce9c39b46ddb96a8a828ea38281d2db995f72cefb0ecf9998b67ecaaf545c746b3e4fb255ccaba049865cfafdcd67777a5bbf3bdecf9e93f4f13b63b8c11f78ca056c55ad7ee7cf2a459156fea54c8f177ecb3cfe0dd7761ce1c68d8305fc315111111912b94a884e9934f3e213d3d9d75ebd651bf7e7d00faf7ef8fd56ae5a38f3ee2c2850b942f5f9ec99327939a9acafefdfba951a306002d5bb6e4a1871ee2c30f3f64c0800100a4a6a6326edc38ba75ebc6f2e5cb01e8d7af1f56ab958913273270e0402a54300b16ac5cb9926fbef986952b57f2f8e38f03101c1c4c404000e3c78f67e9d2a505fde328362c160bd5cb55a77ab9ea74aa73f9b99f4c6b26bf24fc62b7ad6fede1b5bcf5ed5bb6b2e7b52ad6cab5adaf8e4f9d3c2b7b3e76eb58bcddbc19db7aecf53bcf9c0965cb42fffeb6a653a7e09967e0d147cd679744444444a46095a884297bcb5de5ca95eddaab56ad8aabab2beeeeee00ac5ab58a6eddbad99225800e1d3a101010c0f2e5cb6d09d3b66ddb48484860f0e0c176e30d193284a54b97b26edd3a9e7acaac88b672e54aaa56ad6a4b9600fcfcfc080e0e66c99225646464d8ad5cc9ad2be552ca56f63ce8ee205b7b727a3287e20fd96deb9b17358fb3c96701f070f5a07ea5fab9aaf5dd6cd9f3c833917cf4dd4784770da7bc67f96b774e48304be08d1c0965ca00e6d9b5bd7b43e9d2b06081dd234d2222222252404a54c2f4cc33cff0eebbefd2af5f3f264c9860db92f7de7bef316cd830bcbcbc387dfa34717171346fde3cd7f7b768d1822f72947adebf7f3f40aebe4d9b36c5c5c5859898185bc2b47fff7e9a366dea70cc79f3e671f8f0611a34689097b72b57e1edee4df36acd695ecdfecf2d2e39ce6e5bdf81b307587d6835c919c90054f4ac68963dcfb122d5b0724387c99061188cdc309206951ad0bf69ff5cd773090f87cc4c78075d8e0b0000200049444154ee395bd37fff0b3b77c2d6ade0e3736bf72c222222227f4f894a98aa55abc6d75f7fcdc30f3f6c5768e1e5975fe6f5d75f0720363616007f7fff5cdfefefef4f4242826d35283636165757d75c8520dcddddf1f5f5e5cc9933b6b6d8d858dab66deb704c803367ce5c33611a3162846d7b5fb6909010424242ae73d772a32a7957a2dd9ded6877673b5b9bd5b0723cf1b8ddf951db8f6f676ee45cb28c2c006e2b775bae24ea60dc41769ddcc586de1baebfbd2f3515de7e1bfaf685bf563f77ef86f1e3e1e597a14d9b7cbb6511111129a2222222888888b06b4b4c4c745234c55b894a98ce9e3d4b972e5d00983f7f3ebebebeac5dbb9649932651a54a15860c19426a6a2a001e1eb9cff8f1f4f404cc6797dcdcdc484d4db56de3bb928787876d2c80b4b4b4eb8e792db366cd72b84225f9cbc5e242ad8ab5a855b1168fdcf588adfd52e6257efee367bb6d7d1f1ff898dffefccdd6e7e1ba0fd3b176c7eb4ff2d147101707cf3f0f406222f4ea05f7dc03afbc92e7b724222222c580a30fcea3a3a369d6ac9993222abe4a54c23471e2444e9f3ecde1c387a956ad1a008f3efa2856ab95175e7881909010db734e972e5dcaf5fd696969c0e567a1bcbcbc484f4f7738575a5a9a5d99722f2faf1b1a538a068f521e34aed298c6551adbb55f48bbc00fe77ee0a7f89fe852b7cbf507caca324b89f7e80175ea60183070a099347df515942a51ff42454444440a9fc275c2673edbb56b174d9a34b1254bd9ba77ef4e4a4a0a313131b62d72d95bf3728a8d8dc5d7d7d7569cc1dfdf9facac2ce2e3e3edfaa5a7a793909060378fbfbfbfdd16bd9c6302b96292a2a9bc6779eebbfd3efa35ed47b5b237f067fabfffc1d1a3f05709fa850b61c50ab3fec31d77e473b022222222725d252a61cac8c8202b2bcb613b40666626d5ab57a752a54aecdbb72f57bfbd7bf712181868fb7df6735057f68d8c8cc46ab5daf50d0c0c243a3a1ac330ecfaeed9b3076f6f6f020202fefe8d49d16418f0e69bd0b62db468c1a143306c180c18003d7b3a3b381111111181129630356dda94e8e8688e1c3962d71e111181abab2b8d1b9bdbab7af4e8c1dab56b3975ea94adcf962d5b3872e4083d73bc936ddfbe3d3e3e3e848787db8d171e1e8eb7b7375dbb76b5b505050571f6ec5956af5e6d6b8b8f8f67c58a1574efde5d25c54ba2afbe827dfb203494b434080931579566cd7276602222222292ad443d213166cc1856ad5ac5fdf7dfcfd0a143f1f1f161eddab57cf9e5970c183080aa55ab023076ec5856ac5841bb76ed183e7c38172f5e64ead4a9346edc98be7dfbdac6f3f4f464e2c4890c193284e0e0603a76ecc8ce9d3b59ba742993274fb6ab6a171414c43df7dc43dfbe7d3978f020bebebecc993307c3309830614281ff2ca410080b83468da073675e18013ffd047bf698e72e8988888848e150a212a6c68d1bb37dfb76c68f1fcfd4a953494b4ba356ad5a4c9e3c99d0bf9e2101a851a3065f7df515a3468de2c5175fc4c3c3836eddba317dfaf45c2b4183060dc2cdcd8de9d3a7b366cd1a6ebffd7666cd9ac5b061c3ecfab9b8b8b07efd7ac68cf9fff6ee3e2caa3afffff80b1490504b665031333145b71bf3266f2b5771d54a30d710d7cddcca9b6f4a51bac5af7257bf45596dbabaeaa5ab659a097ed3b1bccd6e345cdd5221d4d5b2566d53435041241166e466ceef8f594647186f4a390c3c1fd7c525f399cf39bc0fe7f28217e773dee739cd9a354b76bb5d5dbb76d592254bd4a64d9b2a397e54237bf6481b3648efbda775ebfd346b96347bb674e79d661706000080f3f91917de54836aa5bc3d644646066dc56b929123a5cd9b95b5f57bdd7957807af49056af96fcfccc2e0c0000f82a7e6fbc366ad53d4c40b570e488b46c999ccf4cd4238f072830d0d51d8fb004000050fdd4aa257940b53073a6d4a08166148c566aaab4699364b59a5d140000002ac31526a02a9d3a252d58a0cc07c7ebff25d5d70b2f487dfa985d14000000bc2130015569de3c19a5a5faede74fa94b17e97fffd7ec8200000070312cc903aa8ac321e36f7fd3a6e68f6a7f4e13edde2cf1f82d000080ea8dc004549577df95727234eec41fb5e0ffa48808b30b020000c0a5109880aa5056a6e2d7a669bdff10f5fa431b0d1b667641000000b81c0426a00a94ac58a5c0c30795dc2245efce32bb1a0000005c2e021370ad1986b29f7943fff1ebad49abba2824c4ec8200000070b9e892075c63dbdfdca216c7d3953f26511d3b9a5d0d000000ae048109b8868e1d930afefc171d6a70bb1e9c779fd9e5000000e00ab1240fb8469c4e69f26ff76a41f1473afdd725f2f3f733bb240000005c21ae3001d7c8f4e9d2dddba7c91176931a8efd9dd9e5000000e067e00a13700da4a74b735ff85107fd5354e785bff0845a0000001f456002ae12bb5dfafc7369cd1ac966936687cd90bfa3be347ab4d9a5010000e067223001bfc0f1e3d2faf5ae90f4d96752519174cb2dd213c34ee977ef2e90df334f4b0d1a985d260000007e26021370050c43dab7cf1590d6ae95b66f778df7ec294d9922c5c448edda1af27b6dae54562a2524985b300000007e110213700925679ddaf6d129fd7355ae766fcc5149568e9a07e6e8c9d6397aab5fae6e6998a37aa773a4ffcb91e6e44a393992c321fdcfff484d9a985d3e0000007e0102136a9fe262e9e44957b039ff2337d7fd7969768ece1cce955f4e8e42ce9e542f95a9d779bb304afce477c222196152589864b54a1111aecfc3c2a4c68da5c1834d3b440000005c1d0426f836c3900a0b3dc2ce85e1a7c2eb9f7eaab89fc04095868629af4e987e2cb26a7f7e339d30ee54ddf030dddcc9aa5b7f1da688ae61f26bec0a447e8d1a4975ea54fdf1020000a04a119850bd389d527efee5879ff2e56f176ad0e0dcd51eab556adb56bae79e73afc3c2e4b484e95f59615af3a5552b3e6ea06ff6f92930508a8a92060d9286444b37dd54f5df02000000541f04265c5b25259e01e752e1e7e449a9accc731f7e7e92c5e21176d4b2a567202aff3c2ccc35b75ebd4acb292c94366e94d67c28ad5b279d38e19a1e1d2dbdf4b2d4bf3f4ded000000700e810957a6b0d07bd8a96ccccbf2378fb0131e2eb56f5f79f8b15aa5d0d05fb4fc2d3bdb158ed6ac71852587436ad74e7af4515757bb1e3d585d07000080ca11986ab3f397bf5d4ef8c9cd753d9df542e5cbdfcac34ef9f2b7cac24f58986bbe9fdf353b2cc390f6ee7505a4356ba4f474c9df5fbaf75ee995575c212932f29a7d79000000d42004a69aa47cf9dbe5869fdcdc2b5bfe565900b25abd2e7fab4ac5c5d23ffe712e241d39e2ca65f7dde77a14d2fdf7bb0e0b000000b812b52e303dfae8a35ab26489d7f78f1e3daaf0f07049d2b7df7eab091326e88b2fbe506060a0060e1ca8bffef5afb25aad15b65bb870a1a64d9ba643870ee9a69b6e524242829e7cf2c90af3f2f3f3959898a80f3ffc5076bb5d5dbb76d5f4e9d3d5b163c78b17fec517d2d75f5ffc3ea0fcfc8adb952f7f2b0f3be5cbdf2e0c3f5769f95b55cacb933efac815903efe582a28905ab470356c183448faf5af5d870f000000fc5cb52e303df1c413eadfbfbfc798d3e9d4134f3ca18888087758cacccc54af5ebdd4a85123bdf6da6b2a2828d0b469d3b477ef5ea5a5a5292020c0bdfdfcf9f3356edc38c5c6c6ead9679fd5962d5b949090a0a2a2222526267a7c9d8103076acf9e3d4a4c4c94c562d1dcb973d5bb776f656464a875ebd6de0b4f4870fd5bcd96bf55b50307ce5d45fae20bd705b22e5da4c444d752bbf6ed6bd4e1020000c064b52e3075efde5dddbb77f718fbe73fffa9a2a2223dfcf0c3eeb1a953a7ca6eb76bd7ae5d6adebcb924a96bd7aeead7af9f162f5eac3163c64892ec76bb264d9aa4e8e8682d5fbe5c92346ad428399d4e25252569ecd8b1bae1861b2449369b4ddbb66d93cd66d390214324497171718a8c8cd4942953949c9cecbdf08f3e92faf4a916cbdfaa525999b46d9b2b20ad5d2b7df79deb5bf09bdf4873e7babadb356b667695000000a8a9fccd2ea03a484949919f9f9f7efffbdfbbc756ae5ca9e8e868775892a4be7dfb2a3232d21d8c24293535557979791a3f7ebcc73ee3e3e3555858a8f5ebd7bbc76c369b9a366dea0e4b9264b55a151717a7d5ab57aba4a4c47b914d9ad49ab0545020ad5ce9ea62d7b4a9ab59c3bbef4a3d7b4aab56b95620ae5d2b8d1d4b58020000c0b555eb0353494989962f5faebbefbe5b2d5ab490e4ba8f2927274777dd755785f95dba74d1ae5dbbdcafcb3fbf706ea74e9de4efefafddbb777bccedd4a953a5fb2c2a2ad2fefdfbafca31f9a2cc4c69de3c577306ab558a8d95befa4a1a33c67585293b5b5ab8507af0412924c4ec6a010000505bd4ba257917fae4934f949797e7b11c2f3b3b5b92dcf7339d2f3c3c5c7979792a292951404080b2b3b355a74e9d0a8d2002030365b158949595e5b1dfdebd7b57ba4f49cacacad26db7dd56699dcf3cf38c7b695fb9e1c3876bf8f0e19777a0d58c6148bb769dbb1f69d72ea96e5da9572fe92f7f71dd8fd4aa95d955020000544fcb962dd3b265cb3cc6f22b6b00865facd607a69494140506062a2e2ece3d66ffefb3868282822accaff7df657176bb5d010101b2dbed0af4d28a2d2828c8bd2f4972381c97dca7373367ceacf4ea942f7138a4d4d473f7231d3d2a5d7fbdf4c003aea60df7dd275d90090100005089cafe70be73e74e75eedcd9a48a6aae5a1d98ce9c39a3d5ab576bc080016ad4a8917b3c3838589274f6ecd90adb381c0e8f39c1c1c12a2e2eae74ff0e87c33daf7ceee5ecb326c9c991d6af7705a44f3e910a0ba5880869e850d755a47bef95ce6b3808000000542bb53a30ad5ab54a76bbdd63399e746e895cf9d2bcf3656767cb62b1b8db8a878787abacac4cb9b9b91ecbf28a8b8b959797a766e77525080f0ff758a277fe3e2579ccf55586e1ea64b776adeb4ad2975fbac6bb7593264d723d1fe9d65b69fd0d000000df50ab03537272b21a3468a0418306798cdf78e38d0a0b0b537a7a7a856dd2d2d2d4a14307f7ebf207cea6a7a7ebfefbef778f7ff5d557723a9d1e733b74e8a0ad5bb7ca300cf99d971876ecd8a19090104546465eb563ab4aa5a5ae672295df8f74f0a0141c2cf5ef2fbdfdb63470a0abc91f000000e06b6a6d97bc9c9c1c6ddcb851bffded6fddf7109defa1871ed2ba75eb949999e91edbb469930e1c38a0a14387bac7a2a2a2141a1aaa79f3e6796c3f6fde3c85848468e0c081eeb1d8d8581d3f7e5c1f7cf0817b2c3737572b56ac504c4c8cc7c370abbb9f7e92962f97468c901a37967af796962d93a2a2a475eba493275d2dc01f7f9cb004000000df556baf30bdfffefb2a2b2babb01cafdc8b2fbea8152b56a84f9f3e7afae9a7555050a037df7c53eddbb7d7638f3de69e57af5e3d252525293e3e5e717171eadfbfbfb66eddaae4e4644d9d3ad5a3b35d6c6cacba77efaec71e7b4cfbf6ed93c562d1dcb9736518865e7ae9a56b7eccbfd4a143e796da6ddeecbab274e79dd2934fba96da75ea24f9d7da080e0000809aa8d606a69494143569d244bff9cd6f2a7dbf79f3e6fac73ffea1891327eaf9e79f57505090a2a3a3357dfaf40a5782c68d1ba78080004d9f3e5d6bd6ac518b162d3473e64c25242478ccf3f7f7d7471f7da4e79e7b4eb366cd92dd6e57d7ae5db564c912b569d3e69a1debcfe574ba9e8554bed46eef5e5783863e7da49933a5e868e9e69bcdae12000000b876fc0cc330cc2e02de95b787ccc8c8a892b6e24545d2a64dae80b46e9d74ec98141aeaba0f2926461a30406ad8f09a97010000802b54d5bf37d616b5f60a13ce3976ccd5fa7bcd1ae9b3cf24bb5d6ad3467af861d752bb9e3d5d0f95050000006a1b7e0dae850c43fae69b734bed76ec70dd7bd4b3a7f4d24bae90d4b6add95502000000e62330d5122525d2962de742d2a14352488874df7dd2f8f1d2030f48e73d460a00000080084c35daa953d2860dae80f4f1c7ae56e0cd9bbbae20c5c4b85a8157d2511d000000c07f11986a98efbf7705a4b56b5d5794cacaa4ce9da509135c41a94307e9bc67e602000000b80802938f2b2b73dd8354fe7ca47dfba4a020d70364e7cc71b5fe6ededcec2a01000000df4460f2418585ae6e76e5adbf7372a4b03057ebef575e91faf593ead737bb4a000000c0f711987cc48913d2fcf9ae90b4699374f6acf4ab5f498f3fee5a6ad7ad9b54a78ed95502000000350b81c947dc7fbf2b10dd7baff4da6baea60dad5b9b5d1500000050b311987c445292abfd7768a8d99500000000b587bfd905e0f23cf0006109000000a86a042600000000f082c004000000005e109800000000c00b02130000000078416002000000002f084c00000000e005810900000000bc2030010000008017042600000000f082c004000000005e109800000000c00b02130000000078416002000000002f084cc035b06cd932b34bc015e29cf91ece99efe19cf91ece19504b03d3ce9d3b3568d020592c16858484e88e3beed0ecd9b33de67cfbedb7baefbefbd4a04103592c168d1c3952b9b9b995ee6fe1c285fad5af7ea5e0e0604546466ace9c3995cecbcfcfd7d8b163151616a6faf5eb2b2a2a4abb76edbaeac707f3f103c6f770ce7c0fe7ccf770ce7c0fe70c90ea9a5d4055fbf4d34f151313a3ce9d3b6bf2e4c9aa5fbfbe0e1e3ca8a3478fbae7646666aa57af5e6ad4a8915e7bed3515141468dab469dabb77afd2d2d2141010e09e3b7ffe7c8d1b374eb1b1b17af6d967b565cb16252424a8a8a848898989ee794ea75303070ed49e3d7b949898288bc5a2b973e7aa77efdecac8c850ebd6adabf4fb00000000e0d26a55603a7dfab4468e1ca9989818d96c36aff3a64e9d2abbddae5dbb76a979f3e692a4ae5dbbaa5fbf7e5abc78b1c68c192349b2dbed9a346992a2a3a3b57cf97249d2a851a3e4743a959494a4b163c7ea861b6e9024d96c366ddbb64d369b4d43860c9124c5c5c52932325253a64c517272f2b53c74000000003f43ad5a92979292a213274ee8d5575f9524151616cae9745698b772e54a454747bbc39224f5eddb57919191ee602449a9a9a9cacbcbd3f8f1e33db68f8f8f576161a1d6af5fef1eb3d96c6adab4a93b2c4992d56a555c5c9c56af5ead929292ab769c00000000ae8e5a758569e3c68d6ad8b0a17efcf1470d1a3448070e1c504848881e79e411cd9831434141413a7af4a872727274d75d7755d8be4b972edab06183fb75f9fd4717ceedd4a993fcfdfdb57bf76e3dfcf0c3eeb99d3a75aa749f0b162cd0fefdfb75db6db75578dfe1704872dd5305df919f9faf9d3b779a5d06ae00e7ccf770ce7c0fe7ccf770ce7c4bf9ef8b76bbdde44a6a965a15980e1c38a0d2d2520d1e3c58a3478fd61b6fbca1d4d454cd9e3d5bf9f9f94a4949517676b624293c3cbcc2f6e1e1e1cacbcb53494989020202949d9dad3a75eac86ab57acc0b0c0c94c562515656967b2c3b3b5bbd7bf7ae749f92949595556960fae1871f244923468cf8d9c70d7374eedcd9ec1270853867be8773e67b3867be8773e67b0e1d3aa4bbefbedbec326a8c5a1598ce9c39a3a2a2228d1b374e3367ce94240d1e3c58c5c5c59a3f7fbe5e7ef96577220f0a0aaab07dbd7af524b9527b404080ec76bb0203032bfd5a4141411ee9dee1705c729f9519306080962e5daa962d5b2a3838f80a8e16000000b589c3e1d00f3ffca0010306985d4a8d52ab025379e0183e7cb8c7f8f0e1c3357ffe7c6ddfbe5deddab593249d3d7bb6c2f6e5cbe3caf7131c1cace2e2e24abf96c3e1f00838c1c1c197b5cf0b59ad56f7b23e000000e0627af6ec697609354ead6afad0ac5933495293264d3cc61b376e2c493a75ea947b4ef9d2bcf3656767cb62b1b8db8a878787abacacacc2f3998a8b8b959797e7de57f9dcf397e89dbfcff36b03000000507dd4aac054de9c213333d363bc3cc8848585a959b3660a0b0b537a7a7a85edd3d2d2d4a14307f7eb8e1d3b4a5285b95f7df5959c4ea7c7dc0e1d3a68e7ce9d320cc363ee8e1d3b141212a2c8c8c85f706400000000ae855a1598e2e2e224490b172ef4187ffbedb7151010e06ecaf0d0430f69ddba751ec16ad3a64d3a70e080860e1dea1e8b8a8a526868a8e6cd9be7b1bf79f3e62924244403070e748fc5c6c6eaf8f1e3fae0830fdc63b9b9b95ab162856262623c1e860b000000a07af0332ebce451c38d1e3d5aefbcf38ee2e2e2d4ab572f6ddebc59369b4d2fbef8a25e79e51549ae2b501d3b76d40d37dca0a79f7e5a0505057af3cd37d5a2450ba5a7a77b849b79f3e6293e3e5eb1b1b1eadfbfbfb66eddaaf7de7b4f53a74ed5f3cf3fef9ee7743a75cf3df7e8ebafbfd673cf3d278bc5a2b973e72a333353e9e9e96ad3a64d957f2f000000005c8251cb949494182fbdf492d1b2654b233030d0888c8c34fef6b7bf5598f7cd37df1803060c304242428cd0d050e391471e314e9c3851e93edf7aeb2da35dbb7646505090d1a64d9b4af767188671ead42963f4e8d186d56a354242428c3e7dfa1819191995ce75381c466262a2111e1e6e0407071bddba75333efbecb39f7fe0b8e6ce9c39634c9e3cd918306080d1a85123c3cfcfcf58bc78b1d965e122d2d2d28cf8f878e3d65b6f354242428c162d5a18717171c6fefdfbcd2e0d5e7cfdf5d7466c6cacd1aa552be3baebae334243438d1e3d7a184b972e35bb345ca6575e79c5f0f3f3336ebffd76b34b8117a9a9a9869f9f5fa51f3b76ec30bb3c5c44464686111313638486861ad75d779d71fbedb71bb366cd32bb2c9f57ebae30f98ae1c3876be5ca959a306182dab469a3458b16293d3d5da9a9a9f4d5afa60e1d3aa456ad5ae9e69b6f56444484366fdeacc58b176be4c8916697062f626363b56ddb360d1d3a54eddbb7577676b6e6cc99a33367ce68fbf6ed953e1b0de6dab0618366cd9aa59e3d7baa59b3662a2a2a92cd66d3d6ad5b959494a4499326995d222e223333536ddbb695bfbfbf222222b467cf1eb34b4225366fdeaca8a8283dfdf4d3ead2a58bc77b03060c90c56231a9325ccca79f7eaa98981875eedc59c3860d53fdfaf575f0e0411986a1d75f7fddecf27c1a81a91a4a4b4b53f7eedd356dda344d9c385192abcdf9edb7dfaec68d1beb8b2fbe30b94254a6b8b858f9f9f96adcb8b1323232d4a54b17025335b76ddb3675e9d24575eb9e7bc2c2c1830775c71d7728363656efbdf79e89d5e172399d4e75eedc597979793a7cf8b0d9e5e0227ef7bbdfe9e4c9932a2d2d556e6eaef6eedd6b7649a8447960b2d96c1a326488d9e5e0329c3e7d5a919191bae79e7b64b3d9cc2ea7c6a9554d1f7c85cd6653ddba753576ec58f758505090468d1aa56ddbb6e9e8d1a32656076f020303dd2deaf93b846fe8d1a387475892a4d6ad5bebd65b6fd577df7d675255b852fefefe6adebc39cd73aab92d5bb668e5ca959a3973a60cc3909f9f9fd925e1120cc3504141814a4b4bcd2e0597909292a213274ee8d5575f9524151616cae9749a5c55cd4160aa8676eddaa5c8c848d5af5fdf63bcfcb2f8eeddbbcd280ba8150cc3d0f1e3c765b55acd2e0517515454a4dcdc5c7dfffdf79a3163863ef9e4132526269a5d16bc282b2bd3534f3da53163c6b0d4d5873cf6d863bafefaeb151c1caca8a828656464985d12bcd8b871a31a366ca81f7ffc516ddbb65583060d74fdf5d76bfcf8f13a7bf6acd9e5f9bcba979e82aa969d9dadf0f0f00ae3e563953d0017c0d5919c9cacacac2c77d74c544f13274ed482050b244975ebd6d5ac59b33caecaa37af9fbdfffae23478ee8f3cf3f37bb145c86a0a020c5c6c6ea81071e90d56ad537df7ca369d3a6e9de7befd5975f7ee9f19c49540f070e1c506969a9060f1eacd1a347eb8d37de506a6aaa66cf9eadfcfc7ca5a4a4985da24f2330554376bb5d41414115c6ebd5abe77e1fc0d5f7dd77df293e3e5e3d7bf6d41ffef007b3cbc1454c983041717171cacaca527272b29e7cf24905070773deaaa193274f6af2e4c99a3c7932cd027c448f1e3dd4a3470ff7ebe8e868c5c6c6aa7dfbf67ae18517b461c30613ab4365ce9c39a3a2a2228d1b374e3367ce94240d1e3c58c5c5c59a3f7fbe5e7ef965b56edddae42a7d174bf2aaa1e0e0e04a2f9f3a1c0ef7fb00aeae63c78e69e0c0816ad4a8916c361bf75754736ddbb655545494468c18a10d1b36a86fdfbe7ae69967f8835235f4a73ffd4956ab554f3df594d9a5e017b8e5965bf4e0830f2a353595fb74aba1f2df0d870f1fee315efe7afbf6ed555e534d4260aa86c2c3c32b5d76979d9d2d496ad6ac59559704d4683ffdf493eebfff7e9d3e7d5a1f7ffcb19a366d6a7649b8420f3df4907efae927fdfbdfff36bb149ce7c081037aebadb7f4d4534f29333353870e1dd2a14387e47038545c5cacc3870febd4a953669789cbd4bc7973151717abb0b0d0ec527081f2df0d9b3469e2315ede8c8aff67bf0c81a91aead8b1a3f6efdfaf8282028ff11d3b7648126b8781abc8e17028262646070f1ed4ba75ebd4ae5d3bb34bc2cf507e65c9df9f1f6bd5c9d1a347e5743a959090a056ad5ab93fd2d2d2b47fff7e454444282929c9ec327199fef39fff283838b842532a98efaebbee92e47ad6d9f9caff001f161656e535d524fc64a986626363555656e6bea159723d8769d1a245eadebdbb6ebcf14613ab036a8eb2b2320d1b364c3b76ecd08a152bd4ad5b37b34bc225e4e4e454182b2929d192254b64b158e8c056cddc71c71dfaf0c30fb56ad52af7c7871f7ea8db6ebb4d37df7cb356ad5aa551a346995d262e50d9ffb37ffdeb5f5ab3668dfaf7ef6f4245b894b8b83849d2c2850b3dc6df7efb6d050404a877efde26545573d0f4a11aeadab5ab860e1daa175e7841274e9cd02db7dca277df7d57478e1cd1a2458bcc2e0f173167ce1ce5e7e7bbffa2b366cd1a1d39724492949090a0860d1b9a591e2ef0c73ffe516bd7ae554c4c8c727373b574e9528ff7478c18615265f066ecd8b12a282850af5ebdd4ac59331d3b764cc9c9c9dabf7fbf162d5aa43a75ea985d22ce63b158f4e0830f56189f3163862469d0a041555d122ec3b061c374dd75d7a9478f1e6adcb8b1f6eddba7050b16a87efdfa7afdf5d7cd2e0f95e8d0a1831e7ffc71bdf3ce3b2a2d2d55af5ebdb479f366d96c36bdf8e28b2c35ff85fc0ceedcab96ce9e3dab3ffff9cf5aba74a94e9d3aa53befbc53494949ead7af9fd9a5e12222222274f8f0614972370d287f40e30f3ffca0162d5a98591e2ed0a74f1f6dd9b2a5d21b98fdfcfc545656664255b898f7df7f5f0b172ed4debd7b75f2e449356cd850ddba75d3c48913d5b76f5fb3cbc365ead3a78f4e9e3ca93d7bf6985d0a2a317bf66c252727ebe0c1833a7dfab41a376eacbe7d09dc4a7c000000ef49444154fb6aca94296ad5aa95d9e5c18bd2d2524d9d3a558b162d525656965ab66ca9f8f878252424985d9acf2330010000008017dcc304000000005e109800000000c00b02130000000078416002000000002f084c00000000e005810900000000bc2030010000008017042600000000f082c004000000005e109800000000c00b02130000000078416002000000002f084c00000000e005810900000000bc2030010000008017042600000000f082c004000000005e109800000000c00b02130000000078416002000000002f084c00000000e005810900000000bc2030010000008017042600000000f0e2ff03bd8a08617178b60c0000000049454e44ae426082}\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u32467?\u26524?\u27491?\u22909?\u19982?\u25105?\u30340?\u24773?\u20917?\u30456?\u21453?\u65311?\u20284?\u20046?\u22270?\u19978?\u26159?\u36825?\u20040?\u35828?\u30340?\u65292?\u20294?\u26159?\u25968?\u25454?\u19978?\u26159?\u36825?\u26679?\u30340?\u24773?\u20917?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 data\line -\u9500?\u9472?\u9472? 2014-01-01-0.json\line -\u9500?\u9472?\u9472? 2014-02-01-0.json\line -\u9500?\u9472?\u9472? 2014-02-02-0.json\line -\u9500?\u9472?\u9472? 2014-02-03-0.json\line -\u9500?\u9472?\u9472? 2014-02-04-0.json\line -\u9500?\u9472?\u9472? 2014-02-05-0.json\line -\u9500?\u9472?\u9472? 2014-02-06-0.json\line -\u9500?\u9472?\u9472? 2014-02-07-0.json\line -\u9500?\u9472?\u9472? 2014-02-08-0.json\line -\u9500?\u9472?\u9472? 2014-02-09-0.json\line -\u9500?\u9472?\u9472? 2014-02-10-0.json\line -\u9500?\u9472?\u9472? 2014-02-11-0.json\line -\u9500?\u9472?\u9472? 2014-02-12-0.json\line -\u9500?\u9472?\u9472? 2014-02-13-0.json\line -\u9500?\u9472?\u9472? 2014-02-14-0.json\line -\u9500?\u9472?\u9472? 2014-02-15-0.json\line -\u9500?\u9472?\u9472? 2014-02-16-0.json\line -\u9500?\u9472?\u9472? 2014-02-17-0.json\line -\u9500?\u9472?\u9472? 2014-02-18-0.json\line -\u9500?\u9472?\u9472? 2014-02-19-0.json\line -\u9492?\u9472?\u9472? 2014-02-20-0.json\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u25105?\u20204?\u33719?\u21462?\u26159?\u27599?\u22825?\u26202?\u19978?0\u28857?\u26102?\u30340?\u24773?\u20917?\u65292?\u33267?\u20110?\u20026?\u20160?\u20040?\u26159?0\u28857?\u65292?\u25105?\u24819?\u36825?\u37324?\u30340?\u25968?\u25454?\u37327?\u21487?\u33021?\u20250?\u27604?\u36739?\u23569?\u12290?\u38500?\u21435?1\u26376?1\u21495?\u30340?\u24773?\u20917?\u65292?\u23601?\u26159?\u19978?\u38754?\u30340?\u32467?\u26524?\u65292?\u22312?\u21482?\u26377?\u19968?\u21608?\u30340?\u24773?\u20917?\u26102?\u65292?\u24635?\u20250?\u20197?\u20026?\u22240?\u20026?\u22312?\u22269?\u20869?\u37027?\u26102?\u26159?\u20551?\u26399?\u65292?\u20294?\u26159?\u24635?\u35273?\u24471?\u19981?\u26159?\u24456?\u38752?\u35889?\u65292?\u22269?\u20869?\u30340?\u31243?\u24207?\u21592?\u34429?\u28982?\u24456?\u22810?\u65292?\u20250?\u22312?github\u19978?\u27963?\u36291?\u30340?\u21487?\u33021?\u27809?\u26377?\u37027?\u20040?\u22810?\u65292?\u30452?\u33267?\u21015?\u20986?\u27599?\u19968?\u21608?\u30340?\u25968?\u25454?\u26102?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 6570, 7420, 11274, 12073, 12160, 12378, 12897,\line - 8474, 7984, 12933, 13504, 13763, 13544, 12940,\line - 7119, 7346, 13412, 14008, 12555\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 Python \u25968?\u25454?\u20998?\u26512?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u37325?\u20889?\u20102?\u19968?\u20010?\u26032?\u30340?\u26041?\u27861?\u29992?\u20110?\u35745?\u31639?\u25552?\u20132?\u25968?\u65292?\u30452?\u33267?\u21518?\u38754?\u25165?\u24847?\u35782?\u21040?\u20854?\u23454?\u25105?\u20204?\u21487?\u20197?\u31639?\u34892?\u25968?\u23601?\u22815?\u20102?\u65292?\u20294?\u26159?\u26041?\u27861?\u19978?\u26377?\u28857?hack\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 def get_minutes_counts_with_id(jsonfile):\line - datacount, dataarray = handle_json(jsonfile)\line - minuteswithcount = [(x, dataarray.count(x)) for x in set(dataarray)]\line - return minuteswithcount\line -\line -\line -def handle_json(jsonfile):\line - f = open(jsonfile, "r")\line - dataarray = []\line - datacount = 0\line -\line - for line in open(jsonfile):\line - line = f.readline()\line - lin = json.loads(line)\line - date = dateutil.parser.parse(lin["created_at"])\line - datacount += 1\line - dataarray.append(date.minute)\line -\line - f.close()\line - return datacount, dataarray\line -\line -\line -def get_minutes_count_num(jsonfile):\line - datacount, dataarray = handle_json(jsonfile)\line - return datacount\line -\line -\line -def get_month_total():\line - """\line -\line - :rtype : object\line - """\line - monthdaycount = []\line - for i in range(1, 20):\line - if i < 10:\line - filename = 'data/2014-02-0' + i.__str__() + '-0.json'\line - else:\line - filename = 'data/2014-02-' + i.__str__() + '-0.json'\line - monthdaycount.append(get_minutes_count_num(filename))\line - return monthdaycount\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u25509?\u30528?\u25105?\u20204?\u38656?\u35201?\u21435?\u36941?\u21382?\u27599?\u20010?\u32467?\u26524?\u65292?\u21518?\u38754?\u30340?\u21518?\u38754?\u20250?\u21457?\u29616?\u36825?\u20010?\u25928?\u29575?\u30495?\u30340?\u26159?\u22826?\u20302?\u20102?\u65292?\u20026?\u20160?\u20040?\u26408?\u26377?\u22810?\u32447?\u31243?\u65311?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 Python Matplotlib\u22270?\u34920?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u35753?\u25105?\u20204?\u30340?matplotlib\u26469?\u20570?\u36825?\u20123?\u22270?\u34920?\u30340?\u24037?\u20316?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 if __name__ == '__main__':\line - results = pd.get_month_total()\line - print results\line -\line - plt.figure(figsize=(8, 4))\line - plt.plot(results.__getslice__(0, 7), label="first week")\line - plt.plot(results.__getslice__(7, 14), label="second week")\line - plt.plot(results.__getslice__(14, 21), label="third week")\line - plt.legend()\line - plt.show()\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u34013?\u33394?\u30340?\u26159?\u31532?\u19968?\u21608?\u65292?\u32511?\u33394?\u30340?\u26159?\u31532?\u20108?\u21608?\u65292?\u34013?\u33394?\u30340?\u26159?\u31532?\u19977?\u21608?\u23601?\u26377?\u20102?\u19978?\u38754?\u30340?\u32467?\u26524?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u25105?\u20204?\u36824?\u38656?\u35201?\u20248?\u21270?\u26041?\u27861?\u65292?\u20197?\u21450?\u22810?\u32447?\u31243?\u30340?\u25903?\u25345?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs36 Github\u39033?\u30446?\u20998?\u26512?\u20108?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u35753?\u25105?\u20204?\u20998?\u26512?\u20043?\u21069?\u30340?\u31243?\u24207?\u65292?\u28982?\u21518?\u20877?\u24819?\u21150?\u27861?\u20570?\u20986?\u20248?\u21270?\u12290?\u32593?\u19978?\u30475?\u21040?\u19968?\u31687?\u25991?\u31456?{\field{\*\fldinst{HYPERLINK "http://www.huyng.com/posts/python-performance-analysis/"}}{\fldrslt{\ul -http://www.huyng.com/posts/python-performance-analysis/ -}}} -\u35762?\u30340?\u23601?\u26159?\u20998?\u26512?\u36825?\u37096?\u20998?\u20869?\u23481?\u30340?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 Time Python\u20998?\u26512?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u20998?\u26512?\u31243?\u24207?\u30340?\u36816?\u34892?\u26102?\u38388?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 $time python handle.py\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u32467?\u26524?\u20415?\u26159?\u65292?\u20294?\u26159?\u23545?\u20110?\u25105?\u20204?\u30340?\u20998?\u26512?\u27809?\u26377?\u19968?\u28857?\u24847?\u20041?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 real 0m43.411s\line - user 0m39.226s\line - sys 0m0.618s\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 line_profiler python\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 sudo ARCHFLAGS="-Wno-error=unused-command-line-argument-hard-error-in-future" easy_install line_profiler\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u28982?\u21518?\u22312?\u25105?\u20204?\u30340?{\f1 parse_data.py}\u30340?{\f1 handle_json}\u21069?\u38754?\u21152?\u19978?{\f1 @profile}\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 @profile\line -def handle_json(jsonfile):\line - f = open(jsonfile, "r")\line - dataarray = []\line - datacount = 0\line -\line - for line in open(jsonfile):\line - line = f.readline()\line - lin = json.loads(line)\line - date = dateutil.parser.parse(lin["created_at"])\line - datacount += 1\line - dataarray.append(date.minute)\line -\line - f.close()\line - return datacount, dataarray\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Line_profiler\u24102?\u20102?\u19968?\u20010?\u20998?\u26512?\u33050?\u26412?{\f1 kernprof.py}\u65292?so\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 kernprof.py -l -v handle.py\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u25105?\u20204?\u20415?\u20250?\u24471?\u21040?\u19979?\u38754?\u30340?\u32467?\u26524?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 Wrote profile results to handle.py.lprof\line -Timer unit: 1e-06 s\line -\line -File: parse_data.py\line -Function: handle_json at line 15\line -Total time: 127.332 s\line -\line -Line # Hits Time Per Hit % Time Line Contents\line -==============================================================\line - 15 @profile\line - 16 def handle_json(jsonfile):\line - 17 19 636 33.5 0.0 f = open(jsonfile, "r")\line - 18 19 21 1.1 0.0 dataarray = []\line - 19 19 16 0.8 0.0 datacount = 0\line - 20\line - 21 212373 730344 3.4 0.6 for line in open(jsonfile):\line - 22 212354 2826826 13.3 2.2 line = f.readline()\line - 23 212354 13848171 65.2 10.9 lin = json.loads(line)\line - 24 212354 109427317 515.3 85.9 date = dateutil.parser.parse(lin["created_at"])\line - 25 212354 238112 1.1 0.2 datacount += 1\line - 26 212354 260227 1.2 0.2 dataarray.append(date.minute)\line - 27\line - 28 19 349 18.4 0.0 f.close()\line - 29 19 20 1.1 0.0 return datacount, dataarray\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u20110?\u26159?\u25105?\u20204?\u23601?\u21457?\u29616?\u25105?\u20204?\u30340?\u29942?\u39048?\u23601?\u26159?\u20174?\u35835?\u21462?{\f1 created_at}\u65292?\u21363?\u21019?\u24314?\u26102?\u38388?\u12290?\u12290?\u12290?\u20197?\u21450?\u35299?\u26512?json\u65292?\u21453?\u32780?\u19981?\u26159?\u25105?\u20204?\u20851?\u24515?\u30340?IO\u65292?\u26524?\u28982?{\f1 readline}\u24456?\u24378?\u22823?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 memory_profiler\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u39318?\u20808?\u25105?\u20204?\u38656?\u35201?install memory_profiler:\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 $ pip install -U memory_profiler\line -$ pip install psutil\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u22914?\u19978?\u65292?\u25105?\u20204?\u21482?\u38656?\u35201?\u22312?{\f1 handle_json}\u21069?\u38754?\u21152?\u19978?{\f1 @profile}\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 python -m memory_profiler handle.py\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u20110?\u26159?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 Filename: parse_data.py\line - \line -Line # Mem usage Increment Line Contents\line -================================================\line - 13 39.930 MiB 0.000 MiB @profile\line - 14 def handle_json(jsonfile):\line - 15 39.930 MiB 0.000 MiB f = open(jsonfile, "r")\line - 16 39.930 MiB 0.000 MiB dataarray = []\line - 17 39.930 MiB 0.000 MiB datacount = 0\line - 18\line - 19 40.055 MiB 0.125 MiB for line in open(jsonfile):\line - 20 40.055 MiB 0.000 MiB line = f.readline()\line - 21 40.066 MiB 0.012 MiB lin = json.loads(line)\line - 22 40.055 MiB -0.012 MiB date = dateutil.parser.parse(lin["created_at"])\line - 23 40.055 MiB 0.000 MiB datacount += 1\line - 24 40.055 MiB 0.000 MiB dataarray.append(date.minute)\line - 25\line - 26 f.close()\line - 27 return datacount, dataarray\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 objgraph python\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u23433?\u35013?objgraph\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 pip install objgraph\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u25105?\u20204?\u38656?\u35201?\u35843?\u29992?\u20182?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 import pdb;\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u20197?\u21450?\u22312?\u38656?\u35201?\u35843?\u24230?\u30340?\u22320?\u26041?\u21152?\u19978?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 pdb.set_trace()\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u25509?\u30528?\u20250?\u36827?\u20837?{\f1 command}\u27169?\u24335?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 (pdb) import objgraph\line -(pdb) objgraph.show_most_common_types()\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u28982?\u21518?\u25105?\u20204?\u21487?\u20197?\u25214?\u21040?\u12290?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 function 8259\line -dict 2137\line -tuple 1949\line -wrapper_descriptor 1625\line -list 1586\line -weakref 1145\line -builtin_function_or_method 1117\line -method_descriptor 948\line -getset_descriptor 708\line -type 705\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u20063?\u21487?\u20197?\u29992?\u20182?\u29983?\u25104?\u22270?\u24418?\u65292?\u35980?\u20284?\u36825?\u37324?\u26159?\u29992?{\f1 dot}\u29983?\u25104?\u30340?\u65292?\u21152?\u19978?{\f1 python-xdot}\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u24456?\u26126?\u26174?\u30340?\u25105?\u20204?\u38656?\u35201?\u19968?\u20010?\u25968?\u25454?\u24211?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u22914?\u26524?\u25105?\u20204?\u27599?\u27425?\u37117?\u35201?\u33457?\u21516?\u26679?\u30340?\u26102?\u38388?\u21435?\u20570?\u19968?\u20214?\u20107?\u65292?\u21435?\u25195?\u37027?\u20123?\u25968?\u25454?\u30340?\u35805?\u65292?\u37027?\u20040?\u36825?\u26159?\u26368?\u22909?\u30340?\u25171?\u21457?\u26102?\u38388?\u30340?\u26041?\u27861?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 python SQLite3 \u26597?\u35810?\u25968?\u25454?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u25105?\u20204?\u21019?\u24314?\u20102?\u19968?\u20010?\u21517?\u20026?{\f1 userdata.db}\u30340?\u25968?\u25454?\u24211?\u25991?\u20214?\u65292?\u28982?\u21518?\u21019?\u24314?\u20102?\u19968?\u20010?\u34920?\u65292?\u37324?\u38754?\u26377?owner,language,eventtype,name url\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 def init_db():\line - conn = sqlite3.connect('userdata.db')\line - c = conn.cursor()\line - c.execute('''CREATE TABLE userinfo (owner text, language text, eventtype text, name text, url text)''')\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u25509?\u30528?\u25105?\u20204?\u23601?\u21487?\u20197?\u26597?\u35810?\u25968?\u25454?\u65292?\u36825?\u37324?\u20174?\u32467?\u26524?\u35762?\u36215?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 def get_count(username):\line - count = 0\line - userinfo = []\line - condition = 'select * from userinfo where owener = \\'' + str(username) + '\\''\line - for zero in c.execute(condition):\line - count += 1\line - userinfo.append(zero)\line -\line - return count, userinfo\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u24403?\u25105?\u26597?\u35810?{\f1 gmszone}\u30340?\u26102?\u20505?\u65292?\u20063?\u23601?\u26159?\u25105?\u33258?\u24049?\u23601?\u20250?\u26377?\u22914?\u19979?\u30340?\u32467?\u26524?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 (u'gmszone', u'ForkEvent', u'RESUME', u'TeX', u'https://github.com/gmszone/RESUME')\line -(u'gmszone', u'WatchEvent', u'iot-dashboard', u'JavaScript', u'https://github.com/gmszone/iot-dashboard')\line -(u'gmszone', u'PushEvent', u'wechat-wordpress', u'Ruby', u'https://github.com/gmszone/wechat-wordpress')\line -(u'gmszone', u'WatchEvent', u'iot', u'JavaScript', u'https://github.com/gmszone/iot')\line -(u'gmszone', u'CreateEvent', u'iot-doc', u'None', u'https://github.com/gmszone/iot-doc')\line -(u'gmszone', u'CreateEvent', u'iot-doc', u'None', u'https://github.com/gmszone/iot-doc')\line -(u'gmszone', u'PushEvent', u'iot-doc', u'TeX', u'https://github.com/gmszone/iot-doc')\line -(u'gmszone', u'PushEvent', u'iot-doc', u'TeX', u'https://github.com/gmszone/iot-doc')\line -(u'gmszone', u'PushEvent', u'iot-doc', u'TeX', u'https://github.com/gmszone/iot-doc')\line -109\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u19968?\u20849?\u26377?109\u20010?\u20107?\u20214?\u65292?\u26377?{\f1 Watch},{\f1 Create},{\f1 Push},{\f1 Fork}\u36824?\u26377?\u20854?\u20182?\u30340?\u65292? \u39033?\u30446?\u20027?\u35201?\u26377?{\f1 iot},{\f1 RESUME},{\f1 iot-dashboard},{\f1 wechat-wordpress}, \u25509?\u30528?\u23601?\u26159?\u35821?\u35328?\u20102?\u65292?{\f1 Tex},{\f1 Javascript},{\f1 Ruby},\u25509?\u30528?\u23601?\u26159?\u39033?\u30446?\u30340?url\u20102?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u20540?\u24471?\u27880?\u24847?\u30340?\u26159?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 -rw-r--r-- 1 fdhuang staff 905M Apr 12 14:59 userdata.db\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u36825?\u20010?\u25968?\u25454?\u24211?\u25991?\u20214?\u26377?{\b 905M}\u65292?\u19981?\u36807?\u26597?\u35810?\u32467?\u26524?\u30456?\u24403?\u35753?\u20154?\u28385?\u24847?\u65292?\u33267?\u23569?\u30456?\u23545?\u20110?\u21407?\u26469?\u30340?\u32467?\u26524?\u26469?\u35828?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 Python\u33258?\u24102?\u20102?\u23545?SQLite3\u30340?\u25903?\u25345?\u65292?\u28982?\u32780?\u25105?\u20204?\u36824?\u38656?\u35201?\u23433?\u35013?SQLite3\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 brew install sqlite3\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u25110?\u32773?\u26159?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 sudo port install sqlite3\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u25110?\u32773?\u26159?Ubuntu\u30340?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 sudo apt-get install sqlite3\par} -{\pard \ql \f0 \sa180 \li0 \fi0 openSUSE\u33258?\u28982?\u23601?\u26159?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 sudo zypper install sqlite3\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u19981?\u36807?\u65292?\u29992?yast2\u20063?\u24456?\u19981?\u38169?\u65292?\u19981?\u26159?\u20040?\u12290?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 \u25968?\u25454?\u23548?\u20837?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u38656?\u35201?\u27880?\u24847?\u30340?\u26159?\u36825?\u37324?\u26159?\u38656?\u35201?python2.7\u65292?\u36215?\u28304?\u20110?\u23545?gzip\u30340?\u19978?\u19979?\u25991?\u31649?\u29702?\u22120?\u30340?\u25903?\u25345?\u38382?\u39064?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 def handle_gzip_file(filename):\line - userinfo = []\line - with gzip.GzipFile(filename) as f:\line - events = [line.decode("utf-8", errors="ignore") for line in f]\line -\line - for n, line in enumerate(events):\line - try:\line - event = json.loads(line)\line - except:\line -\line - continue\line -\line - actor = event["actor"]\line - attrs = event.get("actor_attributes", \{\})\line - if actor is None or attrs.get("type") != "User":\line - continue\line -\line - key = actor.lower()\line -\line - repo = event.get("repository", \{\})\line - info = str(repo.get("owner")), str(repo.get("language")), str(event["type"]), str(repo.get("name")), str(\line - repo.get("url"))\line - userinfo.append(info)\line -\line - return userinfo\line -\line -def build_db_with_gzip():\line - init_db()\line - conn = sqlite3.connect('userdata.db')\line - c = conn.cursor()\line -\line - year = 2014\line - month = 3\line -\line - for day in range(1,31):\line - date_re = re.compile(r"([0-9]\{4\})-([0-9]\{2\})-([0-9]\{2\})-([0-9]+)\\.json.gz")\line -\line - fn_template = os.path.join("march",\line - "\{year\}-\{month:02d\}-\{day:02d\}-\{n\}.json.gz")\line - kwargs = \{"year": year, "month": month, "day": day, "n": "*"\}\line - filenames = glob.glob(fn_template.format(**kwargs))\line -\line - for filename in filenames:\line - c.executemany('INSERT INTO userinfo VALUES (?,?,?,?,?)', handle_gzip_file(filename))\line -\line - conn.commit()\line - c.close()\par} -{\pard \ql \f0 \sa180 \li0 \fi0 {\f1 executemany}\u21487?\u20197?\u25554?\u20837?\u22810?\u26465?\u25968?\u25454?\u65292?\u23545?\u20110?\u25105?\u20204?\u30340?\u25968?\u25454?\u26469?\u35828?\u65292?\u19968?\u23567?\u26102?\u30340?\u25991?\u20214?\u22823?\u27010?\u26377?\u20116?\u20845?\u21315?\u20010?\u20250?\u31526?\u21512?\u25105?\u20204?\u19978?\u38754?\u30340?\u23433?\u35013?\u65292?\u20063?\u23601?\u26159?\u26377?{\f1 actor}\u21448?\u26377?{\f1 type}\u25165?\u26159?\u25105?\u20204?\u38656?\u35201?\u35760?\u24405?\u30340?\u25968?\u25454?\u65292?\u25105?\u20204?\u21482?\u38656?\u35201?\u32479?\u35745?\u29992?\u25143?\u30340?\u37027?\u20123?\u20107?\u20214?\u65292?\u32780?\u38750?\u20840?\u37096?\u30340?\u20107?\u20214?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u25105?\u20204?\u38656?\u35201?\u21435?\u36941?\u21382?\u25991?\u20214?\u65292?\u28982?\u21518?\u25214?\u21040?\u21512?\u36866?\u30340?\u37096?\u20998?\u65292?\u36825?\u37324?\u21482?\u26159?\u35201?\u25214?{\f1 2014-03-01}\u21040?{\f1 2014-03-31}\u30340?\u20840?\u37096?\u20107?\u20214?\u65292?\u32780?\u20809?\u36825?\u20123?\u25968?\u25454?\u30340?gz\u25991?\u20214?\u23601?\u26377?1.26G\u65292?\u21516?\u19978?\u38754?\u37027?\u20123?\u35299?\u21387?\u20026?json\u25991?\u20214?\u26174?\u24471?\u19981?\u21512?\u36866?\u65292?\u21482?\u33021?\u29992?\u36941?\u21382?\u26469?\u22788?\u29702?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u36825?\u37324?\u21442?\u32771?\u20102?osrc\u39033?\u30446?\u20013?\u30340?\u20889?\u27861?\u65292?\u25110?\u32773?\u35828?\u30452?\u25509?\u22797?\u21046?\u36807?\u26469?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u39318?\u20808?\u26159?\u27491?\u35268?\u21305?\u37197?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 date_re = re.compile(r"([0-9]\{4\})-([0-9]\{2\})-([0-9]\{2\})-([0-9]+)\\.json.gz")\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u19981?\u36807?\u20027?\u35201?\u30340?\u36824?\u26159?\u22312?\u20110?{\f1 glob.glob}\par} -{\pard \ql \f0 \sa180 \li720 \fi0 glob\u26159?python\u33258?\u24049?\u24102?\u30340?\u19968?\u20010?\u25991?\u20214?\u25805?\u20316?\u30456?\u20851?\u27169?\u22359?\u65292?\u29992?\u23427?\u21487?\u20197?\u26597?\u25214?\u31526?\u21512?\u33258?\u24049?\u30446?\u30340?\u30340?\u25991?\u20214?\u65292?\u23601?\u31867?\u20284?\u20110?Windows\u19979?\u30340?\u25991?\u20214?\u25628?\u32034?\u65292?\u25903?\u25345?\u36890?\u37197?\u31526?\u25805?\u20316?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u36825?\u37324?\u20063?\u23601?\u29992?\u19978?\u20102?{\f1 gzip.GzipFile}\u21448?\u19968?\u20010?\u19981?\u38169?\u30340?\u19996?\u35199?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u26368?\u21518?\u20195?\u30721?\u21487?\u20197?\u35265?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 {\field{\*\fldinst{HYPERLINK "http://github.com/gmszone/ml"}}{\fldrslt{\ul -github.com/gmszone/ml -}}} -\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u26356?\u22909?\u30340?\u26041?\u26696?\u65311?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 Redis\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u26597?\u35810?\u29992?\u25143?\u20107?\u20214?\u24635?\u25968?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 import redis\line -r = redis.StrictRedis(host='localhost', port=6379, db=0)\line -pipe = pipe = r.pipeline()\line -pipe.zscore('osrc:user',"gmszone")\line -pipe.execute()\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u31995?\u32479?\u36820?\u22238?\u20102?{\f1 227.0},\u35797?\u35797?\u21035?\u20154?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 >>> pipe.zscore('osrc:user',"dfm")\line -\line ->>> pipe.execute()\line -[425.0]\line ->>>\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u30475?\u30475?\u20027?\u35201?\u26159?\u22312?\u21738?\u19968?\u22825?\u25552?\u20132?\u30340?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 >>> pipe.hgetall('osrc:user:gmszone:day')\line -\line ->>> pipe.execute()\line -[\{'1': '51', '0': '41', '3': '17', '2': '34', '5': '28', '4': '22', '6': '34'\}]\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u32467?\u26524?\u22823?\u33268?\u22914?\u19979?\u22270?\u25152?\u31034?:\par} -{\pard \ql \f0 \sa180 \li0 \fi0 {\pict\pngblip\picw520\pich380\picwgoal5220\pichgoal3820 89504e470d0a1a0a0000000d49484452000002080000017c080200000025c5d47e0000012f694343504943432050726f66696c6500002815636060327074717265126060c8cd2b290a72775288888c5260bfc0c0c1c0cd20cc60cc609d985c5ce01810e0c3000479f979a9201a157cbbc6c00812b9ac0b320b558e208f2bb9a0a804a8ea0f101ba5a416273330301a00d9d9e525054071c63940b648523698bd01c42e0a0972068a1f01b2f9d221ec2b20761284fd04c42e027a02a8e60b487d3a98cdc401622741d8322076496a05c85e06e7fc82caa2ccf48c12052303030305c794fca45485e0cae292d4dc6205cfbce4fca282fca2c492d414a05a88fb40ba1804210a4121a661686969a10916a522018a0788719f03c1e1cb2876062186b028b9b4a80cca636432666020c4479831478281c17f290303cb1f8498492f03c3021d0606fea9083135430606017d06867d7300c3af506fec25acb40000000970485973000016250000162501495224f00000019d69545874584d4c3a636f6d2e61646f62652e786d7000000000003c783a786d706d65746120786d6c6e733a783d2261646f62653a6e733a6d6574612f2220783a786d70746b3d22584d5020436f726520352e342e30223e0a2020203c7264663a52444620786d6c6e733a7264663d22687474703a2f2f7777772e77332e6f72672f313939392f30322f32322d7264662d73796e7461782d6e7323223e0a2020202020203c7264663a4465736372697074696f6e207264663a61626f75743d22220a202020202020202020202020786d6c6e733a657869663d22687474703a2f2f6e732e61646f62652e636f6d2f657869662f312e302f223e0a2020202020202020203c657869663a506978656c5844696d656e73696f6e3e3532303c2f657869663a506978656c5844696d656e73696f6e3e0a2020202020202020203c657869663a506978656c5944696d656e73696f6e3e3338303c2f657869663a506978656c5944696d656e73696f6e3e0a2020202020203c2f7264663a4465736372697074696f6e3e0a2020203c2f7264663a5244463e0a3c2f783a786d706d6574613e0a8a15bb0f00001e1e494441547801eddd7f6c94f77d07f03371e24bd360b2a69075a9599bc2b40dd3aec5d922406a4ba675018d61aa3573b42aa56a52b32d25dd3415addd92fe22aaa292a51b1e89c2ba69f1d26980ba25e93f9076c3345aa0a9149349c5fd314827d52c6d316b9223017b77e71ff8b081e7e0eeb9ef73df174270f7dcf79eefe7fbfadcddfbeeb93bbbe5c5e323397f0810204080c0a4c09cc913fe2740800001022501c1e0764080000102150282a182c31902040810100c6e0304081020502120182a389c2140800001c1e0364080000102150282a182c31902040810100c6e0304081020502120182a389c2140800001c1e0364080000102150282a182c31902040810100c6e0304081020502120182a389c2140800001c1e0364080000102150282a182c31902040810100c6e0304081020502120182a389c2140800001c1e0364080000102150282a182c31902040810100c6e0304081020502120182a389c2140800001c1e0364080000102150282a182c31902040810100c6e0304081020502120182a389c2140800001c1e0364080000102150282a182c31902040810100c6e0304081020502120182a389c2140800001c1e0364080000102150282a182c31902040810100c6e0304081020502120182a389c21408000815604cd2170f89bc33f38f0e3a0d6f29e3b165f71a51b58503d510c8144025e3124623288000102f1080886787a6da50408104824201812311944800081780404433cbdb6520204082412100c89980c224080403c0282219e5e5b2901020412090886444c06112040201e01c1104fafad9400010289040443222683081020108f806088a7d7564a8000814402822111934104081088474030c4d36b2b254080402201c19088c920020408c4232018e2e9b5951220402091806048c46410010204e211100cf1f4da4a0910209048c0ef5149c414fea0c255274ebde94450759e6e3995cbb98105d513c5104824e07e9b8829fc41dfbf7af0c96b1f0faace77cf7930a87a144380404201879212421946800081580404432c9db64e0204082414100c09a10c234080402c028221964e5b27010204120a0886845086112040201601c1104ba7ad93000102090504434228c3081020108b806088a5d3d6498000818402822121946104081088454030c4d269eb2440804042013f12232154e8c3def16aeedadc1b82aab2757434a87a144380404201c190102af461bf54f8bfb7ffcff34155391254358a214020b180434989a90c244080401c0282218e3e5b25010204120b0886c45406122040200e01c110479fad9200010289050443622a030910201087806088a3cf5649800081c402822131958104081088434030c4d167ab244080406201c19098ca40020408c4212018e2e8b35512204020b18060484c6520010204e210100c71f4d92a0910209058403024a632900001027108088638fa6c95040810482c201812531948800081380404431c7db64a0204082416100c89a90c244080401c0282218e3e5b25010204120b0886c45406122040200e01c110479fad9200010289050443622a030910201087806088a3cf5649800081c402822131958104081088434030c4d167ab244080406201c19098ca40020408c4212018e2e8b35512204020b18060484c6520010204e210688d6399b55ce5ffbe7cac307ab2967bbcb47db5b65cf6f357bde9d2f6e1da04081038232018ce58243cd5ffdd7f7cfec787120e4e61d81b5f37ff73bf7e5f0a139982008148041c4a8aa4d19649800081a4028221a994710408108844403044d268cb244080405201c19054ca38020408442220182269b46512204020a98060482a651c0102042211100c9134da32091020905440302495328e00010291080886481a6d99040810482a2018924a194780008148040443248db64c0204082415100c49a58c234080402402822192465b26010204920a0886a452c6112040201201c11049a32d93000102490504435229e30810201089805fd4d3248dfeaf398b47e6fe4e508bf9e5b1d62b832a483104082413100cc99c821ff5ad57177ef5c57c50656e6fb93ca87a144380404201879212421946800081580404432c9db64e0204082414100c09a10c234080402c028221964e5b27010204120a0886845086112040201601c1104ba7ad93000102090504434228c3081020108b806088a5d3d6498000818402822121946104081088454030c4d269eb244080404201c19010ca30020408c422201862e9b47512204020a18060480865180102046211100cb174da3a091020905040302484328c000102b1080886583a6d9d0408104828e017f524843a33ac77e495d19f16ce9c6ff4a99657032aa6d118e62740a0060282a16ac479afbd72f9cbc7abbe5addae70fab22b7f56b79ddb310102110a38941461d32d99000102e713100ce7d371190102042214100c1136dd92091020703e01c1703e1d971120402042016f3e47d8f4f496fcedff7db6efd05fa7375f829936bdfd4f7ee5e77e35c140438216f8b7fffeeabffde0ab419578fff207e65e3137a8922eba18af182e9ace15091020d09c0282a139fb6a55040810b86801c170d174ae48800081e614100ccdd957ab224080c0450b78f3f9a2e95cf1c202578ce57eaef5aa0b8f4b7144ebe8588ab3998a402605044326db9695a2979e3cd977e47b4155fbb3b7bd7a3aa8821443203c018792c2eb898a081020d05001c1d0507e93132040203c01c1105e4f5444800081860a088686f29b9c000102e10978f339bc9e3451453fcbe50baf5f14d4824647f36d4115a41802e1090886f07ad244153d3ffa96ad3fb93da8057d22777d67500529864078020e2585d71315112040a0a10282a1a1fc262740804078028221bc9ea8880001020d15100c0de53739010204c213f0e673d53d39daf64bb9b901b98d5d79cd1bab5e842b102040e09c02013dc09db3c6c02e78e4a59b9e7b71493845cd9f7bc5d670aa51090102d917702829fb3db402020408d4544030d494d3ce081020907d01c190fd1e5a010102046a2a20186aca6967040810c8be8060c87e0fad800001023515100c35e5b433020408645f403064bf8756408000819a0a08869a72da19010204b22f2018b2df432b204080404d0504434d39ed8c000102d917100cd9efa115102040a0a60282a1a69c7646800081ec0b0886ecf7d00a081020505301c150534e3b23408040f6050443f67b6805040810a8a98060a829a79d11204020fb027e514ff67b680504e213b8e9e4d8e2d75e17d4badb4e9dca5d115445175f8c60b8783bd72440a051026f3af9d20dc7bedfa8d9679d77a4a565d6ed59dce8505216bba666020408d4514030d411d7ae091020904501c190c5aea9990001027514100c75c4b56b0204086451c09bcf59ec9a9a09a427907f665bebb1c1f4e6bbd04ca3575ef3f2aacf5f6894cb2f4940305c129f2b13687a81392f1dbbecf8917096d9f2da4be114d3ac953894d4ac9db52e0204085ca48060b848385723408040b30a088666edac75112040e0220504c345c2b91a0102049a55c09bcfcdda59eb22d0cc02bb4eadfcdae80d41adf0f363af6b0faaa04b2846305c029eab1220d02081932dadc74fb53568f2734cdbd23c07609a6725e7e895cd04081020509d8060a8cecb6802040834bd806068fa165b20010204aa13100cd579194d800081a617100c4ddf620b24408040750282a13a2fa3091020d0f40282a1e95b6c81040810a84e403054e765340102049a5e4030347d8b2d90000102d5090886eabc8c26408040d30b0886a66fb105122040a03a01c1509d97d1040810687a01c1d0f42db64002040854272018aaf3329a0001024d2f20189abec51648800081ea040443755e46132040a0e9050443d3b7d802091020509d8060a8cecb6802040834bd806068fa165b20010204aa13100cd579194d800081a617100c4ddf620b24408040750282a13a2fa3091020d0f40282a1e95b6c81040810a84e403054e765340102049a5e4030347d8b2d90000102d5090886eabc8c26408040d30b0886a66fb105122040a03a01c1509d97d1040810687a01c1d0f42db64002040854272018aaf3329a0001024d2f20189abec51648800081ea040443755e46132040a0e9050443d3b7d802091020509d406b75c38d2640a06e022ffdfddf8fbef4b3baedbeea1db7bef56d57beefb7aabe9a2b645f403064bf8756d02c02af1e3c38367222a0d59c1acd098680fa915e290e25a5676d260204086442403064a24d8a244080407a0282213d6b331120402013028221136d5224010204d213100ce9599b890001029910100c99689322091020909e806048cfda4c040810c8848060c8449b1449800081f40404437ad666224080402604044326daa448020408a4272018d2b336130102043221201832d12645122040203d01c1909eb599081020900901c19089362992000102e9090886f4accd448000814c0808864cb44991040810484fc02fea49cfda4c8108fca4f0934f3cfda78114335ec6efbeb5fb96856b822a4931310b78c51073f7ad9d000102b308088659506c22408040cc028221e6ee5b3b0102046611100cb3a0d84480008198050443ccddb776020408cc2220186641b189000102310b088698bb6fed04081098454030cc8262130102046216100c3177dfda091020308b80609805c526020408c42c201862eebeb5132040601601c1300b8a4d04081088594030c4dc7d6b274080c02c02826116149b08102010b3806088b9fbd64e800081590404c32c2836112040206601bfa827e6ee47baf62b46c76ebc627e508b7fd3a8a768413524f6620443ecb78008d7fffab1b13ff9c173412dfc95f65f7b35a8821413b780e72971f7dfea09102030434030cc20b181000102710b0886b8fb6ff5040810982120186690d840800081b8050443dcfdb77a020408cc10100c33486c20408040dc028221eefe5b3d01020466080886192436102040206e01c11077ffad9e000102330404c30c121b08102010b7801f891177ffad3e2481b9efba66ece5b6702a9ab3f0f26231036dcb5fba7a6138555d9ebfea37c2a9a6492b110c4dda58cbcaa0c0bcabbf3ba7f5783885bf7af535afe4724fbdf4d66ffff8da70aa7ac355970b867ab7c3a1a47a0bdb3f0102043226201832d630e5122040a0de0282a1dec2f64f8000818c0908868c354cb9040810a8b78060a8b7b0fd1320402063028221630d532e010204ea2d2018ea2d6cff040810c8988060c858c3944b8000817a0b08867a0bdb3f0102043226201832d630e5122040a0de0282a1dec2f64f8000818c0908868c354cb9040810a8b78060a8b7b0fd1320402063028221630d532e010204ea2d2018ea2d6cff040810c8988060c858c3944b8000817a0b08867a0bdb3f0102043226201832d630e5122040a0de0282a1dec2f64f8000818c0908868c354cb9040810a8b78060a8b7b0fd132040206302ad19ab57b9042e596074ace554eb9597bc9b5aeee0b5b1cb6ab93bfb2270690282e1d2fc5c3b83023f6db9fa0f5efe645085ffdee8cfaf0daa20c5c42de05052dcfdb77a020408cc10100c33486c20408040dc028221eefe5b3d01020466080886192436102040206e016f3ec7dd7fab0f49e044fe17e6b4bc3e9c8a5ebdec9acbc3a94625290a088614b14d45e0bc027f78e20f465e397dde21a95ed8356fdea65427345928020e2585d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d500701020402116879f1f84820a5d4bb8c1bdff96b3599e2f43bd68fbde12d35d9556d76f2f24f5b9f7ee4f45b968fbdf5a6daecb0467bb9ecdfbf3436effad1b7afabd1fe6ab39b39cffe73cbcb3f39bde2a3b5d95d8df632e7bbfbe61cf9cf53c5aada5e5fa35dd660372dc70e5f36f8afa7dfbe6eecda1b6ab0bb5aede29513addf7ce8f42ffec6d80d2b6ab5cb9aece7b2fff89b96d75ea9c9ae8a3b79e6d96fd76a5717b11fc1701168ae42800081fa0a0886fafada3b010204085425e03d86aab80c26408040f30b0886e6efb115122040a02a01c1501597c1040810687e01c1d0fc3db64202040854252018aae23298000102cd2fd0dafc4b0c6c8585c2f0d0c1c1a1a3474f1472b97cfbfc8e8e259d9d1dedf9d4cb2c0c1f1d3e599a353fbf63c139a72f1c3f7aacfc4d97f605a9155918193e3652d4b9c09ff91d0bcf59f605ae5ac5c513c5b4b5772c985779b5c2c8d1e112cd6c178ddbb6cf5f58ffc64ef5b1b2bab3cea5d8be33334fdd78ce6c9a7eeabc37bce903eb71ba50181a3a3078f8e88991e29da06dee828ececece451d67b5b81e1367639f117d8f21808614f6efb87bedc7fb6756b26ecbe35fea5d99c2c3dcd4d485c38f5e7fe3c6f1b39fdd77e4a39db3df25f66f6e5fdb571ed5b9ed87fb6e4ba7c2a1fed5376d1c982af55c27eedf377c7b67dd2b1adcb1e23d1f1fcce5ba9ffed1df2d9a3e5be1b9775fb7f250a9b8de678fdfd731bdcac281775f7773f1a2758f1c7878fde2e997d4fe74e1b9b5d7addc7fc1fda6d8bea95a2ed8c7fb9f19be7df174d3a9abd6f7c4d1811d1f5c7377b9779513756f797adbc68a2e575e1ecf398792d2ebf5c1ad374fa5c2ba9e4d9fdab2e5ae9e89af6eeedebce67d5b0fa4574a69a63377c84ff60dccfefcbcf0dc97c753a1383ccdbb4b5bc5c3ecb958e6b69deb925a6eefe8da50deddaec1a31548238303938f2c7d872a2f2a0c0d8e5fb4ae2bd1422eaddcfcfc24d74fb37d53f55ca88f73a746a678626460db3b2753614977cf5d7fb9e5539b7a26e6dfb5f9a6dfdc567e819c6241414e2518d26acbf09ef7dd5b7ce2597ceab9f5d91f8d3cbcedde8ff56efc8b6d4ffcf03bfbee2c9770e8de9bf7563ebea455592ed7df7768b67bc3f0c19dbba78a383675aaee2716adef2bfea496a9bf3f7c665b79caeeaf1f39b3b17869772a4f36db172d5b5e9efea9c1e1e92b1f1a7862eaec93072a2f3ab0b37cd1a6251d67d2776a708d4fe4173f3ccdeac5e3471eea2ecdb0fc8bfba6004b2776acaf7f29e75ad98ab31a3755583a1dac2cebc85fadd95cded2fdd5e786bfb1a3ef2feedef8b17bfa5efcd1e1877a3b4bdb07377f61cf91caabc4784e30a4d4f5c2c8f8436fe757b66c98fe70915fb0f473cf3d3a5ec40b090eacd7a7dc812f0fccbc3314f6dff740ae7c67a9cfa4c9f73af198964fe525c2d965e53bd6955fd73db67770da4b86e1fdf79e39d8f5d8de83d32e3a7e6857f9a2de9b5378bd7076b5932f04e7e71b170467d734bf318d3bbb8cf2f9c2c917caffdff5f87dcb2bef87dd5b1e9d788a7674b66749b3eead79370a86947b3b78f2e4b4c790f1c93bbabed4b36249f13178c625a915f7d87d7bcfbe370c0fdc517c7c1bcc2d5f114438a4463163a279efea2e3f09ef1f38f3aa69f8f0674ae37abff278f9d54cff9e17a67a5738fa583917ee5a5de7771766146a431281f1671727677912b670dd177b9774e6e6e7ca9fc948b2afe61d2318d2eeed0797f63e397864ea61a43cfd82dfdff6c4378e0fdcde35fb3bc0f52cb1f3fe4777940e950cdebdbff240d6d0def2eb98ee6d7ff6a1b07e86653d3566dff7a2ae9bcb17f40d4d120d0fee296de9ee5abeacebd6d2a9fea977208a6f3094df0aee5cd5b9a074893fc51731e1bc7ac94d3cea6fbf6de95f3df1dc59e9b06cc37ddfd837f2f0862e4d130c29dd06f28b578d1ffccde5767d70e5d2ebe7b57f64e35ffed3ce3d8387872b4322a57a26a7199cbb68d99de5f7deb63f71787263f1ff23ffb47157f1bfbb36ac787348f7ea6915a67732bfa8735d79b6fd87c7df4b281cdafb4071c3adab3bf3f98ef7965f4e7cede0d1f1825e18cf8cce9e25ede95518f64cfdc5dbf9fe3d7bf64efbfbe413fb264336dddaf38befda566e582ef799db56de705dfbda0dbd7fdbbf73ffe0e1b34222ddb2829b4d30a4d69279dd3b8efcc396c9cf3fe472bbfb1ff8e30faf7fcf8d8b8b21f147f7ec1c3afb504e5a85e5172cefb9a738d9fecdfd138f6db95c6170e0c1d2fc2bd62d5b982b34aab2520541fcc92f7e6ff955d35303e342c34f953facf5ded2878ef2cb56977ababbff4039e00b83fda5405dd2d32517a67af7e087d7af7dfffa0f4cfbfbc1dbd63c35d49867449d3d7d5f7f74cb92c9e2f6efeaffe4c60d6b57761543e2dd1bb6ee3f7c7cf292a8ff170c69b67fde2dbdc5cf3f1c797adfe30f7df19e75d38edd3ff6c0869b16ae68c8a7928a6f79b42f5b5d7e46dcf7e4e0c4bde25bfde5af38f4f416bf27e0806be9d1bfa7f434f3d003074b2f198e1edc5ebad5f42e2bbf7b39bf6b75e9dc407fe981ae70f86be537186e5db1a8b4d19fb240f153a177f6f4dc3aedefbaeede45893e665b0fc17ce7ea8ddf383efcfc33fbbef2c8d63bbbcf1c293db4eb9eb5372efcb44f25e572adf580b7cff309e4e72dea5c59fcdbbde1ee870b85a34307766f5df399d2b3ccc10f2cddf1bde31b1bf04c33bff8f64d9dbb1f182c7ea1e1f66d6bf2935f5ff86cef99fbccf95614c1656f5e567c9ba1d8a49d2f14ee3e79a0fc0643efeaf10f1de53b3a8b9f66d99e1bf8d650a1b37da8fc01df15cb17a5ff7651b06de87e785b5f43be47715e91fc82c54b8b7f57addff0b91dc52fb11fdebb73eb1df796ee870fbeffb65547069637e07e78de7ad3bdd02b8674bc0b07fbb7fef9e6deb33f155a3c44ddb9f2633b86bfb269fc933f071a73e035977b57cfdd2588febee2d3de9189af2ff4de728eaf43a74316d42cf98eaef28baac14343870fed2d7d777dda878e16de526edfeec1c34383e56f29aee809ef71b0919c8d396634db8a870f3cfae79b3ff1e91dfb2a4bcab7772cedbefbef9efd974de52b0d1e6dd4fd70b69a1bb24d30a4c43ed47fcff6befe2f1f183f487dd6a4f9e5eb378c6f6ad41bbdf9c52b3e55aa6060f7de037bfb1f289e5abea5a7111fc31f6708efdf7cc76f97dfb3dcddb7637b29172a3e74f4b69bd71737edefeffbf2ced281a4753d5d8dea637870a58ac2d13831b4677b5fdf831f1f9cf50069c78af5e35f66cc35e41b3321354f30a4d38d7cc7b2d26b8243f7aed975b8f2c94a79fe6fedd9395ec72c97a553606ec12de54f6b3c78dbcd77941ef87277fa187e857cf1c074e94de6e2a37fe9d3a8951f3a5ad0b9acf466e640fff65da52fb7fff632915a6408f1cfdc8ea5e5b2367f61e7f4cfe04d943a72706ff9a3c621569e724d822125f0896335b9dc1d372ef8dbd207a82722a0307264ef8edeb5e35fa3ed5ed3c043108b564dbc6a2989746eadf85e684a48414ff3e6cee2db0c137f967f6845c521e8f6ce5bcf7c0bb0a773fa576a27afe2ff1004162c5b7d6bb98eed1feefa48dfe347273fa35a281c1fdcb3e38635f7942fec1eff5841080537aa06c190927c7ef1faa71fe91d9fec93a50f502fb8765e7bf1eff50b977e60e2e7adf67c7d5b037fa04d2eb7a06bf29b16b93b3fb1aae2812f25a40b4cd3b89753a5c28a6f078d3fa6144fdfda75d6b79ae72d9ffc7988b99ed5bef931d9c8c9673f93e71bff7f7ef1fdcfec182f63f7e6dbdeb970f26e78ddc2f7bcbffc365b2ef7d0335b1bf8fcacf144e50a04437a8d58b4febeef3df3f85ddd679e5b4ecd7de717773effa3befaff0ce9a9098b8f73138ffcd37e61407ed5867bca23ba6f5db5706a68dbf8c8867db870aa9046fff49fe277d926be85d2b36cc623c7a2151397dd59fcd6db54c98d3bd116c051f2b6fcf877bfcffddb3e1ae1537c8af6e291035fda34f135b7e9252cefddfaf5ef0c772ff689b29cdfc730fd8691d2e9e2ebd6916323270ac537c0dada16b4cf6f9f17c243494a8b370d8140040ac59f6c59fc9550a5f7a1dbf2f3e7cf9fd7e8a71e81b894ca100c013543290408100841c0a1a410baa00602040804242018026a86520810201082806008a10b6a2040804040028221a06628850001022108088610baa00602040804242018026a86520810201082806008a10b6a2040804040028221a06628850001022108088610baa00602040804242018026a86520810201082806008a10b6a2040804040028221a06628850001022108088610baa00602040804242018026a86520810201082806008a10b6a2040804040028221a06628850001022108088610baa00602040804242018026a86520810201082806008a10b6a2040804040028221a06628850001022108fc3f93375660613a18c30000000049454e44ae426082}\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u30475?\u30475?\u20027?\u35201?\u30340?\u20107?\u20214?\u26159?\u65311?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 >>> pipe.zrevrange("osrc:user:gmszone:event".format("gmszone"), 0, -1,withscores=True)\line -\line ->>> pipe.execute()\line -[[('PushEvent', 154.0), ('CreateEvent', 41.0), ('WatchEvent', 18.0), ('GollumEvent', 8.0), ('MemberEvent', 3.0), ('ForkEvent', 2.0), ('ReleaseEvent', 1.0)]]\line ->>>\par} -{\pard \ql \f0 \sa180 \li0 \fi0 {\pict\pngblip\picw538\pich538\picwgoal5400\pichgoal5400 89504e470d0a1a0a0000000d494844520000021a0000021a0802000000e9db73710000012f694343504943432050726f66696c6500002815636060327074717265126060c8cd2b290a72775288888c5260bfc0c0c1c0cd20cc60cc609d985c5ce01810e0c3000479f979a9201a157cbbc6c00812b9ac0b320b558e208f2bb9a0a804a8ea0f101ba5a416273330301a00d9d9e525054071c63940b648523698bd01c42e0a0972068a1f01b2f9d221ec2b20761284fd04c42e027a02a8e60b487d3a98cdc401622741d8322076496a05c85e06e7fc82caa2ccf48c12052303030305c794fca45485e0cae292d4dc6205cfbce4fca282fca2c492d414a05a88fb40ba1804210a4121a661686969a10916a522018a0788719f03c1e1cb2876062186b028b9b4a80cca636432666020c4479831478281c17f290303cb1f8498492f03c3021d0606fea9083135430606017d06867d7300c3af506fec25acb40000000970485973000016250000162501495224f00000019d69545874584d4c3a636f6d2e61646f62652e786d7000000000003c783a786d706d65746120786d6c6e733a783d2261646f62653a6e733a6d6574612f2220783a786d70746b3d22584d5020436f726520352e342e30223e0a2020203c7264663a52444620786d6c6e733a7264663d22687474703a2f2f7777772e77332e6f72672f313939392f30322f32322d7264662d73796e7461782d6e7323223e0a2020202020203c7264663a4465736372697074696f6e207264663a61626f75743d22220a202020202020202020202020786d6c6e733a657869663d22687474703a2f2f6e732e61646f62652e636f6d2f657869662f312e302f223e0a2020202020202020203c657869663a506978656c5844696d656e73696f6e3e3533383c2f657869663a506978656c5844696d656e73696f6e3e0a2020202020202020203c657869663a506978656c5944696d656e73696f6e3e3533383c2f657869663a506978656c5944696d656e73696f6e3e0a2020202020203c2f7264663a4465736372697074696f6e3e0a2020203c2f7264663a5244463e0a3c2f783a786d706d6574613e0afe04f17100004000494441547801ed9d09781e5779ef3f59bbb559b22c4b8e23dbb1122f49488863b29bdc5020f4164a439f5b5202a55ccad2f669435ba05ca017d284b6f402690bbd10285c08049a26697042c90e8ee36c8eedacb6ecc88be44dd6be5ab236dff7f328a34fdf3a33dface7fcfce84966ce9c39cbef3da3bfcef69e829e81c118ff20000108400002f9115890dfebbc0d0108400002108813404e68071080000420e00201e4c4058824010108400002c8096d0002108000045c20809cb800912420000108400039a10d4000021080800b0490131720920404200001082027b401084000021070810072e2024492800004200001e484360001084000022e10404e5c8048121080000420809cd0062000010840c00502c8890b10490202108000049013da000420000108b84000397101224940000210800072421b800004200001170820272e4024090840000210404e68031080000420e00201e4c4058824010108400002c8096d0002108000045c20809cb800912420000108400039a10d4000021080800b0490131720920404200001082027b401084000021070810072e2024492800004200001e484360001084000022e10404e5c8048121080000420809cd0062000010840c00502c8890b10490202108000049013da000420000108b84000397101224940000210800072421b800004200001170820272e4024090840000210404e68031080000420e00201e4c4058824010108400002c8096d0002108000045c20809cb800912420000108400039a10d4000021080800b0490131720920404200001082027b401084000021070810072e2024492800004200081221040407302d39333c33de3fd2746272763c5c5b1daa5158b9a166ace84ea43c00101e4c401345e5187c0c0b1815f7defe553a3f3f463c1d29277ffcfb5e53525ead4939a40c07b020c7679cf981cc24a60b8e7d443ffd496a42552d89913133fb9fdb589b1a9b0169c7241208c049093305a8532f94360d7dd3b3365547972fad9a77a323d251c02104825c060572a1342c242e0f4d0e0e4de574f0d8ec9ac464975f5c2f3562d58b2c4adc28d0d4e1c6b2f36522b6b287fdb1fb454d5979e681bfad577f71981c75eec89bdbdd1adec480702ca13404e943771542b38bef9cea1dbbe69965e069e4ec66243bf7de3eabffc644169a919eef862a87bdc7c77e3f5678996c8edd2966a3330d63317612e902b084020030106bb328021385002633ffd56a2969865a9fef94ff77de91fccdb7c2ea64ecd98af57d4cecebaf7b4f79b81a50de5e635171080404e02053d038339231101027e1298e9eeeef9addfca9263c5f7be5771e1855922587924f3f04327c68c98fb9fef3ed69afc215cfe7bab565eb2d84a52c48100048400bd139a41e8084cee7ec92c53c9bbdfbde4d147963cf964d5a73f6d068eefc838856ec6c97921a35b679dbfc8f8a96e989d44497c6bd9ba9ac45bae210081ec049093ec7c781a3081f26bae29a8ae91c992e2cb2e338b323d3c645ebb74916612f1febbda5d4a9c6420a00501e4440b3347ab92050be7e6c30f3db445d6779d3e756a72db03662dca5b5acc6b572e163595bfe9fae532ba75cea5f5668233fbfa078ec9f43fff2000014b04d2fc5166e93d2241c03302c56fbaa8e89ce553078e480eb54ffca2fb895f24655579d59549210e6e0fedec3cf8ca315930565adbb0e93dcb8d1464b2a4b2beece587e259cbbfeeceb145cbe66d9837c2f92f0420904a80de492a1342022620435b159ff8b34c8528fae33f96e1af4c4fad870f1c3e7662f74cefee9963db3ac56d97f9e2d917d69ad743c767e7eacd102e2000814c0490934c64080f8cc0d4e1c3839ff94ca6eca7fef55ffbb66cc9f4d44678518519b9ffd89c6c0c9d98db0c5f5e87db2e13121710c8410039c90188c7fe1338f5f0dd89992ebce92659d655d4b2d20c1cf897efc86c8a79ebeca2694d93f9e2fdfff6da9ee77b8fbe36b0e78957b7fee8b819deb06c4e72cc402e200081b404d87792160b814112e84a58c455ffe083866315d18ffe0fffbe31a12285abbbe79ea2b3cfcea79432c0f5c83fbf38d83537cc9594da92b5356ffbc3739302b98500043211a07792890ce1c113985c7daee9a44b26544aaebcdac53215162fb8e2c6b5350d8569d3ac6c2cbff28615691f11080108a425c0caaeb458080c0581e2fdaf4ba7c4f4d035bd7b97bbc592555bd77ef4fc833bfbcca55c927e4d6379cbe54b64c5b0e88dbbd9911a04d426c06097daf68d64ed866ffdebb1077e6514bd6bfd9b577cf84699101fd9f25fd3bff8b5599f86e79e33af5db9109f2b924e517101a766b9c293443424809c6868f4b05779eaf5d7fb6eba294b296bbefad5d2b7be354b041e410002fe13a03bef3f7372cc41a0e8dc73133d7425c596855e684912136e21100602f44ec26005ca908680f451c6fefddfc71e98f3ad527ad555e537bebf64e35bd2c426080210089a007212b405c83f2b01998a9feeea92288535d5ae6c86cf9a1b0f210001e7049013e7ec781302108000044c02cc9d9828b8800004200001e7049013e7ec781302108000044c02c88989820b0840000210704e003971ce8e372100010840c024809c9828b8800004200001e7049013e7ec781302108000044c02c88989820b0840000210704e003971ce8e372100010840c024809c9828b8800004200001e7049013e7ec781302108000044c021c9f65a288c045ffa9fee78e3c79722a565c5efceee6df4c2af1d8d4d86bfdaf1c1f3a3e3935595c547cc1920b57559f931487db999191a98ec3a3e54b4e9e2c1c1b9e3480c8c5d8e0ecb511d27ff46412ab1f55cd3b9dbebeaa6449859cc332f76f6149e18aba72e37ec5e2f285c5f1731ecb4b16acaae7c0f9394a5c294c00398992715fe97de9ef5ff9aa51e2243979a16bdb6ddbbed45f30ef97e0d292d5b75ffbf74d0b9745a9926e94d5d00c4969aab555fe3bddd171fae4c9e9de9ed3dd3d46f2fbaeb979f064693e59f50c4fc84f520a3b3a069342ccdb758d95726dfcd7109bfacae286ea3233021710883a01e424321694aec99d2ffd73dae28a96fcd5d39f8915243f3c31b1ffc38f7ee267d7ffb0b6b436f99942f786788872ccf4f6cc74f7181212b6faede91c912219ff4d2c9b08cc92aa92fa8a12b9a02b934886ebc811404ec26eb27bf6ffe4e5a3af4c4e4f3e33f8ac9475f8a5e1aa8baa920afd77db6f490a316f4f9deefdd1c1fffcf3b51f3143a27e6188877438443ca6db3ba60f779c1e9dd727b352c1eaa9eec1d8722b31bd8e2302b3a7735e26cd8bcb65184dc6cd4460d62f4bb6f5bca8dc40204c0490933059235d59f6f5ed78b26ff65cf493074e766dee4a92930343fb7b27e37ff9cabf9ab225dfb8f26be754af7ef2d8afffe6f9cf1b81bf3af860d4e564fa44d7d4debd53873b26a50bd2de61d44bd5ff76f48ec98f396e26eab2b2aebcb9b67c6d6305d330aa1a5d8d7a2127a1b76361b159c485e72c5cfdc5d5e66deac5450d1b444b247cd3b26bcda703a74e98d711ba98d8bd47ba20327235b5b7d541ff234235cd5e54435dcc38d2651181b9f4ec1a3a2e26132e424200390989213216e3bc9a0db1e6f82caefcdbd9fd5ccf58bf716dfeb7bc68763591846c3fbcfd40cbfe33bd9347cd0817d65f615e87fc62f2e0a1c95dbbe21272660addbbd25674ef8bd58462b0cb6e1dcf0c8e8d3cfc5ab7bc28d262fc202d763112df0b02c8891754dd4cf37757ff0f33b9af6cfff423479f366f8d0b59b8f58ee6b73fd211d78fb1d3bd1f79e2434911fee0bcdf4b0a09d5adcc854ceedc35b9b77572e74e9d7b210e8c62488bf1a2e8ca86e69a0dcdd5ac16734092575c21809cb88231e044dedff241434e52cb7176f5baf3eb2e480d0f3cc4e8884cecdaa9fc5c883fa80d69f9f1f34765438ce8ca35ab6b9968f1873cb9980490131345542f64f7e267b67c3253e90f0fedf9dfbbbef6d58d5fc814c1e7f05d3d3bea9fdc5df9e8d3c17644aadab6c7365ce773ddfdc94e76c3c85098fc2c2c2dbc34de5fa9b974c5227fb22617cd092027916f00dbbb9eea991e35ab71f9d22bd6d6ae7fa673dbde81f80e3ef9f7fcd15f1e5873a331456f84f8ffdff6a1434f1c7becc59e5d639363ef193beb4afb4b7bfd2f73d4733c796afac9d7fbe4472a22a2b2e9dc3a7425ea360d79f99193901b2877f19e3afa8819e996b7dc66ace9faf0da8f7c65e797cc11b057075a039193ee935d8f9f5191beb15eb390bbea06af346f82bb282c3a3d3d95b2f333b8f2789ab32c3b961fa3bf724d4bddfa26b6b378ca5bd3c49113a50c7feea2f3ccfabcb97ea3292766a03f17a2222ff5bef8f4896d47860fa7e678b86c64bca9aeec78fcafe600ff55964c0c4ee5e56725c0c23bcbdaecaf30bfe20c206f6527809c64e71389a70bcc52f68df7991eba4e9cdc6b86fb73313a31125791ce6dfb067264ddbab6f2e2a0e5c41f26e1ccc59c5f912d2cef5ab7e492e6eacab2b9ed4de12c33a50a3f01e424fc36ca51c2f3ea363c72f42923d2cdbffaec872ff8f0e2f28aa3fdafdd79f07ef3cd0b16ad35afbdb83006b564c246a646aca4bfad71f0622bf1bc8c53189b8ac5f4ea9da4e2943d92df79aac318047bc7ba7a1683a52222c43a01e4c43aab90c67cdbf2b7ffecf51ff68c0f48f9260b07bebbe7f6a482beadf97aef264e5afbf73c71243ec79e9469f6db308c77554cf5f7c5701d1f37943908269b5736b5d46d3a6f7176f3f114026909202769b18436706e5ccb2ca2780bfeeb4bbef4574fdf6c86245e9cb768ed9f9effa78921ae5c1be35a9bdb7f9e38c76e2b65c6bb6ce1f227b2b179e5ceed4765bafefa75f5ec88f407bb32b92027913265e1acb795a4425fdab0f1a7eff88f7bf7ffc73dfbef361fd5972f797fcbeffff715ef4ef4c2623e757c21e35a0f766c3696fc3a4e445e7cb9fe64b0e35d855396c6e5f2a96344df95ce8ab17345d616ffce454b119588dad1ff6217f40c643cf0c7ffd29063fe04c4c1b024221262cec9e79fa691828c6b3d786873ce6976ebd9fdedfd0b8bfb87adc77737e670cbc6d61a1b3b19934e6374b730614e4d46c06e7873236b8bc36ca390948dde49480ce15a31bc9826715d488cda1e6ba95db13d3039718db8ea09c908d86dbf6c635a45753bbb503fe4c405880a27e1919018c4b6ac3cf9a1ed81c15b303e1cab092cf7c8656c4cabdcfb52e7fb2e6a64ae3e72e6f3a7c00c76f9c3397ab9782a24268e60c7bbb66ff8ac59929c17da0e76a592915d90884a2a1642e89dd0069209f8232446ae8c7725d38fc2bdec8294dd2a4fb6f531a7120573f95746e4c43fd6e1cfc94f213168bcde30bd22382e5ab9ed721db339a782a8b8ce36a209222711359ccbc596e5bf3fdcfb0317576d592cdf630d9dffadaca4707cc2627c77a369e8b6cb5d80929a292a1f78cb3236d5bb8e375a092227d1b297fba5950d890f746c7ee2f063ee276d2dc5ee354b1b5f4ae329d2dadbc40a050111952f6cde27fb543eb07119eebf426192200a819c04413d34793e7dfca97fdfff538b8eb63c2af5abcb671a5ff228ed1cc9e2b62b07209b8fe56c95173a06af5fb7e47d9734d97c95e82a10404e54b0a2833ac834c9ddfb7f96d681bc83d4f27925c0f12edc76e563b8b4efca8efafb5eec7c727fdfc7af6e66e7635a440a0722270a1b377dd56474ebee033f7be6f8d3e91f07113ab4b2beb6f558103993a7270464e997b1f3f163579f8d8f164f108732d1342e0543594e0ae50e81cd07efff5fcf7f36545a2215dbb322983f6b70dbe54eabca908a4ca87cea9e3df7ee3c9ee139c1aa1108e633568d6214ea23a35bff6feff71d3b00f6b48a5b96760572dc6f59ffe158cdb99e568dc419fbd2a70dd03b51dfd632baf5b3b6bbbefee23f86534bc400838593fd6b97a96f095d6b688c7dfde8b92323e393ba32d0a2def44e143773983b2589e865bcebcad6c4003fae8b078ee3b6cb0fd067f210a7f75bdbfa643665e38a5adf3225233f0920277ed2f635afc03794d8aa6d20e35d653d4762016ecab7054889c8b2eeebf6c70f6d68ee1751617b8a12269d570906bbe6e150e6463a257fbbf3cb016e4eb44b52c6bb46562db5fb16f1a3486047c7e0a7eeddb3bdbd3f8a85a7cc5908d03bc90227928fa2d5294944dcb6b2f4e28389017e5c9796ce9c3ac51f557ea04eccc3e8a66c3a77885df48958a27e8d9c44dd82f3ca1f95999279857ee3665be3a0ffc7fd96154e9e8a95be5104feef2b01d945bfbb73840d8fbe42f73233fe2ef392aebf69877cf9564e1887cb46c69bea724623824a048c455fec4d51c3a6c8890a76147fc0b7bcf0bf23345392097aebdaca4c8f3c0a2f3d7dd2a39449d63a01d99bf2b99fb71eec19b5fe0a314348003909a151ec156957f78e5b777e390cdeb7ec953b5d6c19ef4a17ec6158e934bfc23cc46b3de98edeb1af3cbc7fcbde1eebaf10336c04983b099b45ec95479ca63c7868b3bd77421c5bc6bb266bab8afb87435c468ae61501999fbf63dbe1f681f10f5db6dcab3c48d74b02f44ebca4eb65dab282ebffecfa0795b4c4a025c7fd7a892d39ede2b1bee420ee032520bb1d65e0ab6b683cd05290b91302c889136a81bfd33e74483c39fa7f78a20f15dfb2d2d7c98c921146577cb0aabd2c64e0ebf30fecdb7d9c4eaa3d6e81c7464e023781ed023c76f891db76dc12ec9957b60b6df985dd95fd32de65393a11d52420035fe2e29e155fd1b22e7212257bc900d7bfbef22f77b7fd2c4a85b65f563fc7bbe26ebbf8175602b2e2ebeb8f1dc0716458ed935c2ee424994868ef6580eb6b2fffe38b3dbb425b42b70ab66bb97f7e67e36ebbf8176202e291e5b687f73395126213cd150d39996311e62bd192afbffc8f6aac06cec9f9d9455dd3652539a311411302c6540abb52c26f6ee424fc368a6d3bb655b444d5c992b406e85ee39f3b4871db95b60c048687804ca57c61f33e76a584c722694b829ca4c512a240d1921feefd81565a22f45f5deedfaf7871db15227b5394cc0464570a93f399f104ff043909de06594af083d6ef89966489a0eaa3c71a3a19ef52d5b8f9d44b26e7bfb3b59dc9f97c187af72e72e21ddbbc5296455ca225cf1c7f3aaf54a2fcb26fe35db8ed8a5633113fc432398fa284d06ac849088d12132d91455c3a6b8958e54063813fb6c16d973f9c5dcc4526e751141779ba951472e21649d7d23116046bb2882b0b3539ee37cb531e694ec05014967b85aa192027a132474cab05c1d9d1cb71bffd6b97658fe3cad3f201b69eb802d2ef444451c409318ae237f7ccf9212799d9f8fec4d012dd167165c1bc67851f1eaf174cfaea252c4b7d796497802c204651ec42f32e3e72e21d5b7b29a325a9bc18ef4a65424812014351d892928425905be42410ecc999a225c944cedcfb33de557e7c5fdadc098c0a015114d99282a2046e2fe4247013ccce9730c695d612ed4d9e8f77158dfa7d0464da9a1298270114254f80f9bf8e9ce4cf30af14e89764c7e7ff71bfd9cbc3d33013405182b50e7212247fb424277d39ee77bca92e67b43c2354944de59902af8784008a12a0219093c0e0a32516d1b7aeadb418d371b4a205d38edfe5c5b011405182b20872120c79b4c43a77c6bbacb322a641004509a425202701603fd9b75f3787f3f950f661bc6be10cb3f1f998288ceffef88563ec70f4d930c889cfc0630b7adb1a1ffbeb9b26cbfcce38caf99d58eeed7857d1cc4494f150f63404d8e198068ac741c889c780e7272f5a52f9f8e70a26467fe3e89e3f8ad5ce7fc85d46025b56b2713d231c1e642280a26422e3513872e211d874c98e0f2ddc7aab6889f1cc5094b2059eefab4857948885edaeec9facadf2aed0b8edf28e6db0291b3b1cf166ef8f1590137f38c762e343154f7cae70649e975c51942f0c4fa128566c70acc5c3ce1c6ebbac9820a271f066ef9be190135f509fd192a2be83a9999d3bd089a2a462490d61bc2b9509211609a0281641e5190d39c913a0a5d7cb777d37ad96182fa3285620ca789777c7fde2b6cb8a09221d4714e527db8f45ba0ae12f3c72e2b98dca5ef876c9fec7b36783a264e7633cf5eeb85fdc7659e11ff538722af08f9e3d1cf55a84b9fcc889b7d6296e7ba4b475b3953c4451bed9d9bbbc789195c87ac67975f98c9e15a7d66e117878770f8e87dd82999a0e7292cac4b5105916bcf0d9dbad27573539f6a5a3ed284a26628f35747a37de85dbae4cd8150b970df36c6ff4c8a6c8894760e3db15658b89ddd45194ecc43c1cefc26d5776f40a3d95031cbb86c615aa5058aa829c786389f1a1f2e7be616e31b195078a920517e35d59e0f0c82201d98cf28d5f1d62338a455cd6a32127d659d98829635c599672e54cc850948b4b1a72c6d42dc2f6c5bd1e55b97aaadba3944936840464a1d71d4f312defb265901397814a72a52ffdb8f8c8b379a62b8af2b9832f5f55b234cf74147bdd9fe37e15834675d212d8d13178efcee3691f11e88c0072e28c5bc6b78a3ab695bd7257c6c7361ffcd9c197509424667b56e096260909b70e09dcf762e7f6f67e872ff35a0a01e42405491e0105c3c76d2de5b292158a924469cbd2798e6a929e3abeade8dee7f85d5e8c2e0119f2625ade2df321276e918c7be54af4f0e85eba315194b71733ea354b94f12e179b164919d3f27070850072e20ac67822d93da9e499cd470fbd84437b9321e35d260a2ef22720d3f2ec96cf1fa3a4809cb8823126bbdf737a52c933278e483101eeaa73fff0c4aab6ed66fa5ce84680ddf2ae581c397101a34c9994effcae0b09e54a02453108f970dc6f2e53f05c35021c069cbf459193fc19c63c9a32495b3214c5c0d2bad6dbe37ed3c227506102c6415b0a57d087aa2127f9421687c1f9ec587490bd28caada331cd0fdddad6e8fe7857cdc2530eccc12bca106012254f53222779012cec7cc9a2c3e0bcb249791987f68c77a5340a025c20209328bb8f0fbb90909649202779985dce587cf2d63cdecfeb5514a56375755e04791902e9087ce7a90edc79a503933b0c39c9cd28530cd9b1e8ccc963a604ed866bae28cf368dd825963d3e6ebbb2f3d1e469cff004eebc9cd91a3971c62d26ce54f277cce530ef84d70c45d1f3881439ee77b2b62a01069710708780b8f3c2f98a0394c88903686736c0db3917cb511e565f1245d1f6d0ad632db55631110f027608480785212f3bc0e2719113bbc4e2f1031fe64a2ab4b647a46c59793209453eb7b8edca879e62efcabae1db9f38a458a5bcae0e72629b704886b992caada7a230de95d40cb87591c09ece1186bc6cf1444e6ce10ad7305752d10d4559535a9f14aef66d6ff322b72ab8609c15a26eb154241d86bc6c191239b1852b74c35c49a51745b9e5c0ab5a1d91e2e271bf15475a937872ab390119f2faf1f347358760bdfac889755631d9b41886d55c394bacd511298f35744e9795e4644204083823b0b5ad9f8d8d16d121271641c5a3953ffb0d1bb1038daa95a274af71ed3098c2a2d381da8dccc34840363686b158e12b137262d52672027ce18827e7005a2d81cd78fa288a8be35d9525133631135d7d02b2b19153e5ad981939b14229262ee85d3c01de52966e441245d1e1d02dc6bbdc682ca4918d809c2a7fb067345b0c9eb1efc4621b58f8cced1663862d9a260eed8756bab39ead303615360b529e9010f8c9f3c7425292d01683de496ed3c84693a2ae5772c70b6b0c1d14c5ade37e2ba6fac36a46ca153001b6a1e4340072921351accc9793167397238f18ca2bca96a5519ad6cac392bc1a24811fd341c98a1f39c98a27168bdc0c7ca6fa88a2dc3c55a5eaa15b838593fd6b9765aabbf5f0c2a931eb9189a91b01e6e4b35b1c39c9ca677ca874efcfb3c688d2c32b4ebcfe85e1295515c595f1aeb2fec351b22865f59dc0437bba710d99893a7292894c3cbc7ce71dc19e6892ad708e9e297c440ae35d8e5a042fd923c03ef92cbc90938c7016f4b6951c7822e3e3c83e50555164bc6bbca92e4fb3e0b62b4f803abc2efbe459349cd6d0c8495a2cf1c0f21ddfcdf82ce20f0c45a92baa88783d928bdfbab63239c8e63d6ebb6c02d3343a8b86d31a1e39498b25ee9e2bd28b83d3d72a215414e5abc78e29768ce3b6c6c1842a720901af08c8a2611c79a5c2454e5299c443ca5ebe2bfd038542d53b22e570d948fee35db8ed52a88d7b5895fb76757a987a3493464ed2d84df9ae895967f51425fff12edc7699cd838b2c04e8a0a4c2414e529944c973709ad2db0c524c515eae77f3b85f9b2c89ae17013c0d27d91b394902122b6e7b245a9e83932b60ff5e14e56b875ad538742bffe37e71db65bf0569fa86ec6adcb2b747d3caa7ab3672924ca5f455f5674d92eb7ce65e1987f6c75a6ad356d062206ebb2c82229a10b8efe5137030092027268af885865d93c4faaba1285b5632de956855ae3d24400725112e72924823a66dd7c4a4a080a2e439de553cd667d2e002023909d04131112127268a9838a2d76dd664aef20957a228ef2d72edb8dc8484fdbbcc67bcab6484d170ff2ca5404e74504c232227268a5869ebe6b91bbdaf6e6c8ff6318eaf374ceb6d406aef2b81875af913240e1c39996d76faec35b1f89d45fa88947c8efb2d1e386e1111d1206010e8e81d6393bca0404e66bf081db6c1dbfdf823ad28dd6b1c8ed795f51cb10b8af8106093bcb401e424fe2188f360b53d7439feda0d4589e21129af2e9f715c6b5e84805d02b249be6b68dcee5b8ac5474ee2062ddd7bbf627675b13aa228513c742b9ff1aed252a4c8c516a44b52f7bda8bb172fe424161b1f52f25c13173fe2881e91e27cbcab70d2457a24a50901390745f30e0a72225d131674e5fedea3a828071a0b72578c1810708f80288a7b89452f25e444e4449dd3e03d6d80915314c7c7fd969e665fbda74d49d9c4e5247965eb66a162bacb89785551ec34780b46771e4514e59b9dbd5139744b8efbed5fbbcc416d4ba7471dbcc52b109093e475760aa9bb9c94eca36b62ef9740b41cdaef595164af7ac486407e04b6eed777bc4b6b3989af0fee3b985fe3d1f1ed08298ab3f12edc76e9d8ac5daab3ce2b86b59613d6073bfe82a2a22832de35b2caf67e46dc76396e18bc2804b45d31acb19c8c0f151f798ed6ef9880a128179734384ec19f17db5696fa9311b940c020b0e3f0d0c8b88e6bcdf59593e223cf32099fe7f72f8af2b9832f87fc18c76d8d8376ab89db2ebbc4889f484026e477b4db6e75892944f45a5f396112dead261bf223520e978d8c37d5d9aa2c6ebb6ce122722a013d7d0c6b2a2705c3c799844ffd061c87845c515ad7563aae1a2f42c00101f1317cb047bbe5e69aca095b171d7c21d95f1145797bb1ed49efec69baf5d4c178176ebbdc82af6d3a5bdbb43bd6535339293af2acb6addcbb8a7ff450480fdd92f1aec9da2a5b152fc36d972d5e444e212013f229618a07e8282772521687f87ad4ae437b444a3ec7fd7ac48a64d5262087feea36dea5a39c941c7854ed761c6cedc2a9285b56da73c3b57046c79539c1b61cf5727f78b75e2ebc749413b69b78fddd8650517657f6db1aef2a9a99f09a12e92b4f40b7f12eede4a4a8631bdb4d7cf88c45516e1d8d85ea1847c6bb7cb03b592412900d28dbdb3572e1a59d9c141f7926d1de5c7b47206c0eed772db7b151b97c8013e3bd6b1a1aa5acd57e460de504c72afe7dcca152946717754d979558acfc82497b732d1693259a6e04b41aefd24b4e18e9f2ff630e95a2383eeed77f6ee4a80601adc6bbf4921346ba02f9440d4509c3a15baf2e9fb148a0fcf83e8b31890681ec04f419efd24d4e18e9cadef2bd7a2a8af2a5a3ed812bca630d9d16c7bb8a465928ec5563d02ddd3d2774f1b6a2919cc86159ace90af04b0ec911298c7705d806f4cc5a9ffd8c1ac949c9c1c7f46ccde1a9751814c5fa785745d95478d051924813d0c47f974672829fae307c9086a2ac29ad0faa30db17f75accba68c1b4c59844834076029a8c77e92227e2911e3f5dd95bbc6f4f45516e39f06a50876ec971bffd6b97f9565932828010107ff55d43e3caa3d0454e8a4ebca2bc2da355c1008f48d9b3a2c80a2bdc7659a1441c8b045ed0e07c465de4a4f8309be12d367bffa205a5285b967659a9246ebbac50228e45027b3a472cc68c6e345de4a4a8fbd5e81a49e19207a2288c7729dca2425bb59d1a1c7fa2859cc801272c110eed67268af247b15a9f8bd7de947bbc0bb75d3e1b45f9ec761f1f56bb8e5ac8091327216fc4fe3bb4b772dc2f6ebb42de6c2257bc3dc7151fefcafd379ad7362becdd57f0fa7f4d4d159795178d6ff8786a7625fb1e98e9da1f2b2a8eadb862aae992d40839438aba9887cf0929e008a228b1b3d67d37e693376f39ee77bca9aeecb876a779076c66bdb3577efa247839a9fcc5c78a7af71bcd2cad9c543ef6e98253712f0583c59f8f399313967545e133f659515ad7565e9c554ee26ebb6aae8b0239ca180d02cacb49c0835de53b6e172d79bd37e37e3189606889e3f62213278edfe5459f0988a2dc3c55e5cfa15b39c7bb70dbe5b3f575c84eede993207b2745c7772e7cf26bd286ce5d5c98d89264f8abecd77f333136593c7cb07c3c7ed8f27347a62e5beeb0a84c9c24b20dfff515275eaf5fd4786b55d1f88cb73e4e18ef0a7f6350af84327db2bea94abd7a19350aac7752706aa8e2818fa6c55a303152d6b1adbafb79434b6e7df2d40bc7acfa154f4d9089935426210ff1ed889413cb2bb3a3a859782a7b049e42c01601b5c7bb029393855b3e57341aef79e4fcf7854da57ff216ab87e8a5a646ef249549f843fc51942d2b397231fc6d41a9122227ee9bb3f8d0afcb5edb9c29ddd32595932baf357ea61a2fce14cd4ab838a5b7128d38212460284a5d51857765db5dd93f59abecc88377dc48391f02077b943dfe2480de890c73553ef047863da6ca164d35ac4db2cdf4e2f3867ee74ee367f4da2f273db5755b74e2655bf1891c2a02a2285f3d76ccd343b78eb564db41593d65a9031d2a681426e404c41d64c84be8b87801c849d5831f5a3035eb5cf3e4bbfee57499877f1e160e1c708c8617c340c0eb235218ef0a8395b52a437b3f72e292c14b5ff96171c70e23b1536bdf2b235a2e259c3e99050307d33f20343a043c5514c6bba2d3101429a9c2679ff8da3b89af007ee216b3519c5affbb45c777159c9a733c20b7f26346c8ffa2a80f39c99f62f02978aa28bdcd8b32d5b0a27b5fa6478443c0190106bb9c714b7eabfcf9db139d7e57df7753cdcfde5374628f194f6ee5c7bccdf3820d8c79020cd5eba2285f3bd4eac5a15bd68ffb0d15100a135d02aa6e66f4b577b2607cd0cf1650d837ebbbc5cf4cc9cb53025e38b47faca173baccf94a744feb4be24a1238d4a3e60a755fe52416f3353be6e195fc14bd5094ee354bd3b2aa6adb9e369c4008e443a043d1d978879e4b9ca11cddf4c582cb3f95f46ec5af3f5bd4d96a040ebeffe7494ff3b9651e3e1f7a617e571425b6eaa26d1327dc2aa48c7735bee45662a403811c04dafbd53c37de5739910d25a9984f97cc2d1476e67f3e354d238479f84c641408174559b2e2a2fba7dc511419effa0d05a050858810507536ded7d1a70cb6f6a40cec87cf405b9de01bdbdd3cc6b17fedb2b46870db95160b817912e81a52b083e2c9af727ba017945b8c5f6c31de99680b46ddf9bbd54e9ec4f59b808bc738ee59e16b4fdd6f52e41732023da393212b910bc509fe1312672a59ea21c35fbd9f3a9c2542a64785fdec38c9c446a970b70edddab2b4eb4aa5c05099501350d2537d087a27de189d55c2de700d63aa461f25cf43b7060b27d38e77e1b62b8c268f7e994627bc3dce271042caca49c1949a2bbb036925e1cf5414e50bc353792a0ae35de137b43225ece863ee243ac6e49893e8d8ca9d92e67f44caae3a5fb7d9ba536d52892601251d412ada3b191f8a661ba3d47911c853518ce37e934a80dbae2420dcba42e0e4a9e99171d566e3d59493421c09bbd2e42398489e8ad2ba36c771bf11444291434aa043b9cd8c6aca899c361fd21644b1bc27208af2cdce5e67876e6d6b4c1eef5a303eec7d91c9414702eacdc6ab2927ac12d6f1eb4ca8b36387f6a9e35d1547663d002524cf25045c20d0d1abda6cbc9a72523049efc485e61ee9241c2b4ac7eaea48579cc2432028026aca09bd93a0da53a8f275a628cf3625ff2d5258743a54f5a2306a10d8d399dcd2a25e2f35e524ea56a1fc6e113014c5d6a15ba9c7fd56964cb8551ed28180c204d49413369d28dc64ed564d14c5ee1129c75a6aede6427c08d825d03daada9f296aca895dbb125f7902b61465cbca792e150a630afac350dee2e1af60cf3072127a2b150c1f0f7d1929600004ac2b4ad27857c5547f00c5254b0d0828b69351c1dec982d12e0dda215574424014e5edc5e9cff14d4a8ef1ae2420dc7a4140b19d8c0aca891756274d65087cf490a543b75e6f9836ab5c3835665e730101086422a0a09ce09a3e93b10937085839744b8efb9d2e2b31e297f53b397107da10c84940b18df10aca49c1e4bc79d49c1625828604ac284af71a4bc3621ad2a3ca6e11506c63bc8272e296a549476d023915e5d5e5330601dc76a9dd12a89d5b049013b748924ef40888a2dc3a1acb74e89639de85dbaee8999612074140413961ee24888614d53cb33bb41f5a591fd58a51ee281060ee24ec56e258dfb05b2864e5cba228e671bfb8ed0a99d114298e6247fc2ad83b51a4a1510d1f096452942d4b67f730e1b6cb476b90555409202751b51ce576978028cadff58d261dba355838d9bf7699bb19911a045425809ca86a59ea659bc0b2d1fe2f1d6d4f521463bc0bb75db669f2827e04149493c2fe03fad9911abb4320f5881463bc0bb75deef02595f90414732aaca09c144c8cce37197710b04120495164bc6bbca9cec6fb44858065028a391556504e2c9b928810484fc0509435a5b3ab845bd756168ff5a58f4a280420f00601e4e40d12fc1f02090444516e39f0aa718ce3b6c6c192919e84875c4200026908202769a010040183807144cae1b291d1da8530810004b213404eb2f3e1a9ee040c4539d830a03b08ea0f815c0490935c8478ae3d015194ea72e444fb7600805c048a7245e039047427f07acd153bc62ed39d02f587402e02c8492e423cd795c058e9e2ad656ffd71fff97ddd65ba32a0de10b0410039b1018ba89a10385c7df17d93573c3ab83c36ac498da926045c20809cb8009124d420305554fe7cc575778f5cd0d653ad468da80504fc24809cf8499bbc424aa0bb6acdd6824bbfdfb33ec6c1d0213511c58a0001e4240246a2881e1190eec8c18a8bbf35b2a9ad97ee88478c49361b81f212a5d6d62227d98ccd335509c834fb2f4bafbf7fe09cbe934cb3ab6ae408d46b659d52db63159493a9a517169d7825024d892206414056fdfed7c4c54cb307c19e3c1527a0a09c286e31aae78880744776955d1e9f66ef665ccb11415e82402e02c8492e423c8f38019966ffc5cc55f7f4af66d56fc42d49f1c34e003909bb85289f330232cdfe5ae5153f18dec834bb3380bc0501bb049013bbc4881f7602830b973f5ef4d6f8347b17d3ec613716e55389808272325dbb8aa97895daa8f5bac834fb5d63976d1f5862fd156242204002eb1a2b03ccddf5ac159493d3c54a59c87593ab9720ceb5d4b329358a220105e5248a66a0ccce088873adc7a72f619add193dde8280bb04149493998a067719915ad808cc4db3e35c2b6cb6a13c7608342f566a7a4f4539a95c6ac7a0c48d12019c6b45c95a943517818a12a57e032b55995cb6e379540918ceb5e2d3ecbd4cb347d588945b79020aca09835d2ab5dab969769c6ba96457ea7286407d45b14a24149493d3554d2a5948dbbae05c4b5bd3eb53f1866ae64ef4b13635f59d00ceb57c474e861070878082bd1301335dbbb2b0ff903b8448c52f0273d3ec1ca9eb1773f2099040739d525d1321a9a69c9c2ea90ab09590b52d0273ab7e39c3ca163822479c8062cbbac41a6aca097e5622f1a1e15c2b1266a2901e11a077e211589793c5cf8acb40dd4e6e769a7d60b9db09931e04224380de49344c25bd93681454b3521ad3ecdfeebfa4af5bb55163cd2c49755d20a0d8967821a2e660d7e912bc40bad0dc5d4c02e75a2ec224293508d03b89861dd9c918123bcd4db3e35c2b2426a118a121d05cab5a1f5dd1de093b1983fe668c69f6eff7ac8f9d0cba28e40f815012a82c536a4bbc3056534ea462534b2fe4102dff3fa239e75a9c61e53f7d728c0e01f59675097b65e564a6025f81be7e5b38d7f2153799459c407d4549c46b90a6f80acb49639aea12e401019966bf6ff28a470797c7d8cdee015e925492c0cac50bd5ab97b272c25a61af1bab8c6b3d5f71dddd2317b431cdee356bd2578e807aab84c544cacac94c05876879f509ce39d7629add2bc6a4ab388115b5e5ead5505d3959dca29eb582ad9131cdfead914d6d38d70ad612e41e7d028ab9a6370ca2ac9c48f5f02becd64727d3ecbf2cbdfefe8173fa38c3ca2da6a4a33181758d6aeeb3565b4ecec14d7d9edf2c6758e50990d721904aa0be52b51d27461d95969345e7c4624fa4da92909c0470ae9513111120e098c092ca52c7ef86f945a5e5a46e7598d187b36c32cdfe8b99abeee95fcdaadf701a88522940605d13835d5133e374e345512b7260e59d73aec5347b604620635d08a8e7adcbb09ccabd13a921b3f1393f509c6be544440408b84840dcaba8e7adcbe0a3b89ccc2c5cca6c7ca62f41a6d9ef1abb6c3bceb53201221c021e105851a7e08e138393e272228e208b8f3ee7419388709273ceb538c32ac266a4e85125d0ace20646c318cacbc99ba2dae83c283767587900952421608f80aaf3f04241713999616fbcf8eac7b996bdef9dd810f090c0aafa0a0f530f3469c5e544d8ea7cf009ceb502fdb8c81c02c90454dd0f6fd453033969d0ee1c2dc3b9567c9abd97435f92bf67ee21102001254fcd32796a20274b2f8cbd62d657f10b9c6b296e60aa1771020a4f9c8865d497134d3633e25c2be2bf6728be160436aea855b89eeacb89184fe1e913c3b956fc0cabee6a859b295583800204d49e381103e921272a4e9fcc4db373a4ae02bf69a88206049013158c2cbd1365a64f70aea5428ba40e5a12507be2444caa45ef44a64f4e972c2c9888f651b48673adf819565d655a7e8c541a021126505eb2607d5355842b60a1e85ac88970985a12616f2bb3d3ec03cb2d1894281080401809ac5baaa653fa44d6dac849049d77e15c2bb1a5720d814813507ee244aca38b9c4c9e7d45f9ceef45a539e25c2b2a96a29c10b048e0d21535166346379a2e7272baaa69a662c982d1ee309b6a6e9abd8755bf6136146583803d0272387c43b5fa539ebac889185f3a28a5ad9bedb502bf62cfadfa8df67201bf78910f0422456043b3fa5d133188467232b1ea37c2262738d78ad4ef040a0b018704ae69a973f866a45ed3484ec4597d78960bcf4db39f54bf0b1ca92f82c242c0650232d2a5b053fa44581ac989547b72f9e525079e48acbfffd732cd7edfe4158f0e2e8fb19bdd7ffae40801df09e8b0a6cb80aa9b9c5c11949ccc39d7629addf7ef990c211020810d1aace932f0ea252753cd57f93fde3537cd4e7724c06f9aac21100401d90cafb617e144a87ac989d4dcb7f12e639afd5b239bda7a59f59bd8e4b88680460474d80c6f9a534339f17cbc6bceb916d3ec6643e302025a12d8749e166bba0cdb6a27279e8e77e15c4bcbdf18541a02e9096835d22508b49313a9b3ebe35dc634fbb7fb2fe9eb66d56ffaef8a50086848e0523d762f9a96d5514e4ead79af5bebbb649afd173357ddd3bf9a55bf6693e20202103008bc73fd12ad50e82827b29f314fff5d73ceb59866d7ea73a1b210b04c409fdd8b26121de5442aefd87f9731cdfefd9ef5319c6b998d880b08402085c0a696c529618a07682a27a7d6fcb65dff5d32cd7ed7d865db07f4eabd2adefca91e043c23704d4bad67698734614de544fcd5cb01f245275ec9699639e75a4cb3e78445040840e00c81e6ba321d3cd227595b5339110a13abde965d4e70ae95d456b88500042c12b87e9d8ec318facac964cb3b4eefbca36022790e44a6d99fafb8eeee910bda70ae65f1d3211a0420904040b69be8e3a72ba1de5aee3b31eb9fb40165ceb956b2c4986f70010108402007814d2d759565c53922a9f858dfde8958d3d88082732d151b367582406004aed76cbb89095a6b39910d28bf6cfce44f8fd5f7e15ccb6c115c400002791090d34d349c8437802dc8839b0aafca0694be293ca3a8604aea00813010b866b576eb834decbacbc95bd7d4cbe655130717108000041c13905f26f22bc5f1eb517f51773911fb69b87935eaad96f243209c0434ff65829cc4deb95edfbf26c2f94d522a08449480863be1132d859cc464499fe68d20b141700d0108382320bf46b49d8437882127710e375cdce8ac01f116042000018300bf469093784b90bf2964791f5f05042000016704e89a0837e464b6f1dcf0663a28cebe23de820004629bced5ce1d7daad591935926eb9baae8a0a4b60f422000819c04e45787fc02c9194df908c8c99c89e9a0ccb1e00a0210b04c805f1d062ae464aec9c8df17724ac1dc3d5710800004721190ad8b744d0c48c8c9bcc6a2e72905f31070030108d82170c3454cbbcef2424ee6351c7caeccc3c10d0420909580e65e5592d82027494062fcad914c847b08402003818f5fb322c3131d83919364abd3414926c23d0420908e000bba92a820274940e2b7fcc591060a411080c07c022ce89acf836d8c493ccedcb207251d15c22000813902744de658bc7145efe40d12f3ffcfdf1df37970070108cc23c0af887938cedc2027a94ce2217450d2732114021088c5e89aa46d05c8495a2cf1c00fbc6559c6673c8000043426c02f87b4c6474ed2628907aeaaafe01c948c747800015d09c8817bf2cb41d7da67ab3772928d8e1c60505e02a26c88780601ad08c82f04ce35c964717e576622130f977350deb5be215b0c9e4100023a11906dce727eab4e35b65157e42407acf75dd2247e147244e2310420a00101f955f09b172ed5a0a20eab889ce40677d36567e58e440c08404075026c70ce6e61e4243b9ff8d38d2b6a655d60ee78c4800004d425c0e2e09cb6454e72228a47f8d8d5675b8a47240840405102fc12c86958e42427a27804999367398725524482808a04e4f3975f022ad6cccd3a21275669ca6273e6e4adc2221e0414222087b4ca921c852ae455559013ab6465752013715661110f020a11f8e065cb15aa8d8755414e6cc015475e979c5d6de305a2420002112720c3121c056fd186c8894550b3d13e7e4d33fbe4ed21233604224b40c6b79934b56e3de4c43aab784c19f2fae046b6a1d883466c08449480ec39630fbc75db2127d659cdc694d37fd986629b1a2f40206a0464645bf69c45add4419617397142ffe6eb5632e4e5041cef40202204e4039791ed8814362cc5444e9c58e2cc2a2f9a9a1374bc03814810102d6198cbaea59013bbc466e34b2f98555e0ed9f11a04c24d400e3a6298cb8189901307d0665f6195977376bc0981b01290d55c37bd85e5364ecc839c38a166bcc390977376bc0981b01290ddca0c7339334e91b3d778cb20203de277ae1f7978770f402000010508c82e939c9b163bfac75b8f754dc64ace5e54f1a6b3aacc5a9f9a9ae91a9e306f932e1aaa4a4a8b92ff7c97579ed9db353a3951bcb0e2f2e6eaea881fcc859c2419ddf6adb4bf3d9d231d7de3b6dfe4050840204c042cfae67a6ccfbe6f6d199482bf6bc3f2443969ef1dbbf1fb3b3355e83f3fb1b1b936d989e4e3adad5f7ca0d7784522445d4e92d532130bc23311907ef1c7ae66ab7c263c8443201a046465b07cc839cb2a5d13434b2466e1fcd8c70687e707e4b893a40c2d39b97f7b8ea811794cefc40543adaaaf90adf2776c3bec425a2401010804414056d6c8879c29e7db1f797d786cb86f78f4c9335ff9c8cb8f56bee9ed49915f3cd4991492e55686b93e7dd7b658ac44e22c5cbd314bcc083d424edc31966c95df7362646b5bbf3bc9910a0420e02301f1f3987d65f09d3be6a462f0b97bc70fee4c9593833db3bd936bcf6ffcf36b920fdc5b5a15570ef3df4f9e7ea96d685e88f928ba17c8896bb693c585ed7d634ca2b806948420e00b019932f9d0e5c9bffdb3e45c73d9fbe4272982f4369e6a9f0d5b531f9f232988c56aca0bd34e87bc7cb4f75bdb46925250e0163971cd88c624ca6d0fb58d4dccb89628094100025e129029934f5db72a670e89479edcf9dc91d4f82712d6747d67cb21f931e2b4d4957ef1bde75fb0746e186d687cf2967b9f8bc5e69684a5a616d110a6e2dd349c3189e2668aa40501087849e02fde768e95537b6fbe6e95f993b6389d834369c3dbfa4efdc1f777fe685797f9f4fbbf7ae6e0e8ac967cf0b246335c810be4c46523ca240a0724b8cc94e420e00d012bbb4c2ce67ca837dbb2ae7f7a68aface392a47ebdafe3ce1765182cfeef6fdfbde6e2e54af5519013c3b26efe578e95c69d979b40490b021e10908fd4c513e08f25c8c99fbc75e5d7deb75e7e5a1ae6369afcdbf6eeeee1537f79efec04cbc696bab7adadf7a05a4126c9dc8927f465d1a14ca2302def095c128540de0464fa5d3ed2bc934948a0a8e68397d5c8fd790d15bf794183f1e0fca6caebbff9bc71fde08e43053dfb8c95c112f2fe8b1a650b7df7c8dc2efacec131e9b6a4dd3c6fa410feff16f40cc4b777f2cf7502077b469996779d2a0942207f0232fdfe95f7acb132659236af0d7fb7d508ffad0dcbbffc8ef8347ea27b95a4d55cb76c7ee1e7af8d499cd3a74f1714cc0e73a54dd6084cbb793e4bfc503da277e29539645a5efefcb9fdf1435e6540ba10808023029fbfbec5b196a4cd509675fdceb76777b6ffc53b5a3eb0a1294d340b5a92e6ad48053177e2a1b96463d4c7aeb2b19eddc3a2903404207086807c925976bf3b83545e34d7edd8fcda9c4358992c31ba26ce928ddc5bf44ebc3519bbe5bde54bea10b043409672c92769e70d4b71975495b62c2e6ceb9d96d86d4707fee2ded7de73a1ac009efce7875e8ec5ca8d24fef0cab37ffb4dc9cb829f3dd0f50f8fb41b11feef8d1734d694276d9eb7947d682221279e9be2139b564a1ef85ff11c341940202b013963d1c5a55c92555c3ddef8f7c96bd7fce5bdbb8dbb2dfbfae4e7ccf5ac96c8f5fb2f6912d57923faecff0f24785e112d4975399c143fe4b70c76f96120f1bf222b49fcc8893c2000817404e40374fd8cc5448fc2d79eb758d607a7cb391ef6830f5d9caa25992247371c39f1c376e27f4566ff50143f589307045208c8a7271fa0eb672cd6ce1fdcf9c895678b6c5cdd529798bf688c2cd64a3c1625f1692c563cff36da772c14f6cf7e2c1df68f353941e00d021e69c91bc9a7f9bf78e51a188b8f84457df02a4dddb206212759f1b8fd1045719b28e941201b01d96222fd12d7977265cb52e3670c76f96a7c69d6d2b8a589fb9a2b9941404b026889cf66e7f79acfc063a228e2c4d4ef5cc90f029a11404bfc373872e23ff3d8faa62ab63706c09d2c752220e76d33c6e5b3c191139f81cf66277ba9509460d093ab0604e4e3f262bba206e4f2aa22729217be7c5e4651f2a1c7bb10c844002dc944c6eb70e4c46bc2d9d24751b2d1e11904ec13404bec3373ed0de4c43594ce1242519c71e32d08a412404b5299f819829cf8493b7d5e284a7a2e8442c00e01b4c40e2d4fe222279e60b59b288a629718f1219048002d49a411d435bbe283229f265ff6cca781421004b212607f49563cbe3ea477e22beeec99b1673e3b1f9e422089005a920424d85be42458fec9b9a328c944b887400602f5957147ddec55cc8027806006bb02809e33cbaea1f16f3c71b0a36f3c674c2240404f02fefb09d693b3ad5ad33bb185cba7c80dd5f1e319381fc527dc641335026849382d46ef249c7689976a647cf2c7cf1fe554e0f05a8892054140cee89573155d3f0b2b88aaa896277212768bfee8d9c30fefee097b29291f047c21f0cef5f51fbafc6c5fb22213db049013dbc8fc7f61cbde9e3bb61df63f5f728440a808b0b92454e6482d0c7292ca248c21bb8f0f7ffdf103631333612c1c658280c7045810ec31607792474edce1e8432ab2c9f18ea73a58eee5036ab20815019978ffd475ab647d4aa84a456152092027a94cc21b2293f3dfd9dab1f3f050788b48c920e02a814bceaefef835cd4cbcbb0ad5abc49013afc87a97eebd3b8fdff762a777e993320442428089f79018c2623190138ba0c2156d7b7bbf7453984a099755288d7b0464b2443a251b57d4ba972429794e0039f11cb147193095e21158920d9c009325819bc05901901367dc42f116fb1c4361060ae12a01d9a5f8894d2b5d4d92c47c22809cf804dabb6c6457ca9ddb8f32f0e51d6152f687800c707d70e35972f68f3fd9918beb049013d7910690202e2303804e96ae129001ae8f5ddd8c7b6057a1fa9d1872e23771eff2c31d8b776c49d95302b282eb868b1b590dec29641f12474e7c80ec5f16b279fe3b5bdb7b4626fdcb929c2090070139b3e4e3d7ac58df5495471abc1a1602c849582ce15639d8eae81649d2f19a005b14bd26ec73fac889cfc07dca8e8d293e81261b4704d856e2085bd85f424ec26e21c7e5a39be2181d2f7a4a605d63e5cdd7ad64a6c453c881248e9c0482ddbf4ce9a6f8c79a9c72116029702e42d17e8e9c44db7e564acf6e472b9488e335014e51f49a70e0e92327819bc0a702b0e8cb27d064934280e55b2948d40c404ed4b46bda5a493745ce09c61b715a38047a44403694bcef9226f4b93f1c000006c7494441548f1227d95011404e42650e3f0a235be8ef78eaf09ece113f32230f8d09c894fbc7ae3e9b63aff46902c8893eb69e5753c6bee6e1e0c6550232ba75d36567e15ede55a811480c39898091bc2ba29cc4f5cbdd5db88ff48eb06e29cbdaad77ad6f60744b37bb1bf5454ef4b4fb5cad65ec4b6653b6b6f5cf05710501470458bbe5089b3a2f2127ead8329f9a30a1920f3dde659a8436200490139ac11c019950b96f5727b3f47344b8ca454084e4863737e2c33117272d9e23275a98d9562599a5b7854bdbc80889b6a6cf5471e4241319ddc3e590c7fb5eeac4d7bdeeed205dfd65e1d60d1735726c623a365a8721275a9b3f67e54554b6eeef67f82b27284d2220249a18da5935911367dcf47a8b3915bdec9daeb672f8eef5eb96d02349c786b05902c8094dc12a0144c52a29b5e2c92157efbaa081c976b5acea496d90134fb02a9c28fb5414366e52d5641f8978dcc24b4a12166e3311404e3291213c1b01c39b243beab3318aec336367fb3bd7d773c255646d184cc1919360b82b932b73f5ca98522a226b7faf595dcb04894a36f5b32ec8899fb495cd4b46c01edaddfd645b1feebfa26863e98e6c6aa9bb7efd12c6b5a268bef0941939098f2d225f121901dbd13ef8d09eee8ebef1c857468f0ad01dd1c3ce3ed51239f109b456d94867457c4a3ed9d6cb2ec870da5db68f6c68aea13b124eeb44b754c849746d1781921fec197d7877f70b1d830c8285c15a868a5cd352b7aabe220ce5a10c8a11404e14336848abb3bdbd5fc6c1d09540cc2353239736d76c5851c3795681f0d72753e4441f5b87a2a6e88a6f6640457c434d460601e48496100c01d963ff42fb80780363dede5d038837944b9b175dd25ccd8896bb60492d2701e424272222784b40e6edf71c1f9171b03d2746986271c65a3a22eb96561a235aec3d74c690b7f227809ce4cf90145c23205d169116e9b2e0c33827534342562e5eb8aea912875a397111c10702c8890f90c9c20901a425959a2ccd929d22cdb5e522218c65a5f221245802c849b0fcc9dd12019196433d273bfac7dafbc6749b6b91b9109110d18f15b5e5ec5ab7d45c88141001e42420f0649b0701a3e372a8f764cfe88462ea2243582beb168a84d45794acac5fd85c5bc65c481e2d85577d25809cf88a9bccbc20209b25e3bad23b1e3981413cbc680fa4191401e42428f2e4eb2101f11ed6d13f3e3a31251ad33d724a7cbdc4af83f32426bd8d8a9222a9b00c5bc97feb2b8a975497327fee610b20e920082027415027cfe008c8bae49ed149c95f969019a548529a437d2773ae579629f12595a5a9953065a379715c3fca8b1730619e4a891055092027aa5a967a41000210f095c0025f732333084000021050940072a2a861a916042000017f092027fef22637084000028a12404e14352cd582000420e02f01e4c45fdee406010840405102c889a286a55a10800004fc25809cf8cb9bdc20000108284a003951d4b0540b02108080bf0490137f79931b04200001450920278a1a966a41000210f0970072e22f6f7283000420a02801e44451c3522d08400002fe12404efce54d6e108000041425809c286a58aa05010840c05f02c889bfbcc90d02108080a2049013450d4bb520000108f84b0039f19737b94100021050940072a2a861a916042000017f092027fef22637084000028a12404e14352cd582000420e02f01e4c45fdee406010840405102c889a286a55a10800004fc25809cf8cb9bdc20000108284a003951d4b0540b02108080bf0490137f79931b04200001450920278a1a966a41000210f0970072e22f6f7283000420a02801e44451c3522d08400002fe12404efce54d6e108000041425809c286a58aa05010840c05f02c889bfbcc90d02108080a2049013450d4bb520000108f84b0039f19737b94100021050940072a2a861a916042000017f092027fef22637084000028a12404e14352cd582000420e02f01e4c45fdee406010840405102c889a286a55a10800004fc25809cf8cb9bdc20000108284a003951d4b0540b02108080bf0490137f79931b04200001450920278a1a966a41000210f0970072e22f6f7283000420a02801e44451c3522d08400002fe12404efce54d6e108000041425809c286a58aa05010840c05f02c889bfbcc90d02108080a2049013450d4bb520000108f84b0039f19737b94100021050940072a2a861a916042000017f092027fef22637084000028a12404e14352cd582000420e02f01e4c45fdee406010840405102c889a286a55a10800004fc25809cf8cb9bdc20000108284a003951d4b0540b02108080bf0490137f79931b04200001450920278a1a966a41000210f0970072e22f6f7283000420a02801e44451c3522d08400002fe12404efce54d6e108000041425f0ff014a1ce9eeb175659f0000000049454e44ae426082}\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u34013?\u33394?\u30340?\u23601?\u26159?push\u20107?\u20214?\u65292?\u40644?\u33394?\u30340?\u26159?create\u31561?\u31561?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u21040?\u36825?\u37324?\u25105?\u20204?\u31639?\u26159?\u30693?\u36947?\u20102?OSRC\u30340?\u25968?\u25454?\u24211?\u37096?\u20998?\u26159?\u22914?\u20309?\u24037?\u20316?\u30340?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 Redis \u26597?\u35810?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u20027?\u35201?\u20195?\u30721?\u22914?\u19979?\u25152?\u31034?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 def get_vector(user, pipe=None):\line -\line - r = redis.StrictRedis(host='localhost', port=6379, db=0)\line - no_pipe = False\line - if pipe is None:\line - pipe = pipe = r.pipeline()\line - no_pipe = True\line -\line - user = user.lower()\line - pipe.zscore(get_format("user"), user)\line - pipe.hgetall(get_format("user:\{0\}:day".format(user)))\line - pipe.zrevrange(get_format("user:\{0\}:event".format(user)), 0, -1,\line - withscores=True)\line - pipe.zcard(get_format("user:\{0\}:contribution".format(user)))\line - pipe.zcard(get_format("user:\{0\}:connection".format(user)))\line - pipe.zcard(get_format("user:\{0\}:repo".format(user)))\line - pipe.zcard(get_format("user:\{0\}:lang".format(user)))\line - pipe.zrevrange(get_format("user:\{0\}:lang".format(user)), 0, -1,\line - withscores=True)\line -\line - if no_pipe:\line - return pipe.execute()\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u32467?\u26524?\u22312?\u19978?\u19968?\u31687?\u20013?\u26174?\u31034?\u20986?\u26469?\u20102?\u65292?\u20063?\u23601?\u26159?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 [227.0, \{'1': '51', '0': '41', '3': '17', '2': '34', '5': '28', '4': '22', '6': '34'\}, [('PushEvent', 154.0), ('CreateEvent', 41.0), ('WatchEvent', 18.0), ('GollumEvent', 8.0), ('MemberEvent', 3.0), ('ForkEvent', 2.0), ('ReleaseEvent', 1.0)], 0, 0, 0, 11, [('CSS', 74.0), ('JavaScript', 60.0), ('Ruby', 12.0), ('TeX', 6.0), ('Python', 6.0), ('Java', 5.0), ('C++', 5.0), ('Assembly', 5.0), ('C', 3.0), ('Emacs Lisp', 2.0), ('Arduino', 2.0)]]\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u26377?\u24847?\u24605?\u30340?\u26159?\u22312?\u36825?\u37324?\u29983?\u25104?\u20102?\u21644?\u33258?\u24049?\u30456?\u36817?\u30340?\u20154?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 ['alesdokshanin', 'hjiawei', 'andrewreedy', 'christj6', '1995eaton']\par} -{\pard \ql \f0 \sa180 \li0 \fi0 osrc\u26368?\u26377?\u24847?\u24605?\u30340?\u19968?\u37096?\u20998?\u33707?\u36807?\u20110?flann\u65292?\u24403?\u28982?\u35828?\u30340?\u20063?\u26159?\u31995?\u32479?\u21518?\u21488?\u30340?\u35774?\u35745?\u30340?\u19968?\u20010?\u24456?\u20851?\u38190?\u21450?\u26377?\u24847?\u24605?\u30340?\u37096?\u20998?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 \u37051?\u36817?\u31639?\u27861?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u37051?\u36817?\u31639?\u27861?\u26159?\u22312?\u36825?\u20010?\u20998?\u26512?\u36807?\u31243?\u20013?\u19968?\u20010?\u24456?\u26377?\u24847?\u24605?\u30340?\u19996?\u35199?\u12290?\par} -{\pard \ql \f0 \sa180 \li720 \fi0 \u37051?\u36817?\u31639?\u27861?\u65292?\u25110?\u32773?\u35828?K\u26368?\u36817?\u37051?(kNN\u65292?k-NearestNeighbor)\u20998?\u31867?\u31639?\u27861?\u21487?\u20197?\u35828?\u26159?\u25972?\u20010?\u25968?\u25454?\u25366?\u25496?\u20998?\u31867?\u25216?\u26415?\u20013?\u26368?\u31616?\u21333?\u30340?\u26041?\u27861?\u20102?\u12290?\u25152?\u35859?K\u26368?\u36817?\u37051?\u65292?\u23601?\u26159?k\u20010?\u26368?\u36817?\u30340?\u37051?\u23621?\u30340?\u24847?\u24605?\u65292?\u35828?\u30340?\u26159?\u27599?\u20010?\u26679?\u26412?\u37117?\u21487?\u20197?\u29992?\u22905?\u26368?\u25509?\u36817?\u30340?k\u20010?\u37051?\u23621?\u26469?\u20195?\u34920?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u25442?\u21477?\u35805?\u35828?\u65292?\u25105?\u20204?\u38656?\u35201?\u19968?\u20123?\u26679?\u26412?\u26469?\u24403?\u20316?\u25105?\u20204?\u30340?\u20998?\u26512?\u36164?\u26009?\u65292?\u36825?\u37324?\u19996?\u35199?\u29992?\u21040?\u30340?\u23601?\u26159?\u25105?\u20204?\u20043?\u21069?\u30340?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 [227.0, \{'1': '51', '0': '41', '3': '17', '2': '34', '5': '28', '4': '22', '6': '34'\}, [('PushEvent', 154.0), ('CreateEvent', 41.0), ('WatchEvent', 18.0), ('GollumEvent', 8.0), ('MemberEvent', 3.0), ('ForkEvent', 2.0), ('ReleaseEvent', 1.0)], 0, 0, 0, 11, [('CSS', 74.0), ('JavaScript', 60.0), ('Ruby', 12.0), ('TeX', 6.0), ('Python', 6.0), ('Java', 5.0), ('C++', 5.0), ('Assembly', 5.0), ('C', 3.0), ('Emacs Lisp', 2.0), ('Arduino', 2.0)]]\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u22312?\u20195?\u30721?\u20013?\u26159?\u26500?\u24314?\u20102?\u19968?\u20010?points.h5\u30340?\u25991?\u20214?\u26469?\u20998?\u26512?\u27599?\u20010?\u29992?\u25143?\u30340?points\u65292?\u20043?\u21518?\u20877?\u35760?\u24405?\u21040?hdf5\u25991?\u20214?\u20013?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 [ 0.00438596 0.18061674 0.2246696 0.14977974 0.07488987 0.0969163\line - 0.12334802 0.14977974 0. 0.18061674 0. 0. 0.\line - 0.00881057 0. 0. 0.03524229 0. 0.\line - 0.01321586 0. 0. 0. 0.6784141 0.\line - 0.07929515 0.00440529 1. 1. 1. 0.08333333\line - 0.26431718 0.02202643 0.05286344 0.02643172 0. 0.01321586\line - 0.02202643 0. 0. 0. 0. 0. 0.\line - 0. 0. 0.00881057 0. 0. 0. 0.\line - 0. 0. 0. 0. 0. 0. 0.\line - 0. 0. 0. 0. 0.00881057]\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u36825?\u37324?\u20998?\u26512?\u21040?\u29992?\u25143?\u30340?\u22823?\u37096?\u20998?\u34892?\u20026?\u65292?\u20877?\u25214?\u21040?\u19982?\u20854?\u34892?\u20026?\u30456?\u36817?\u30340?\u29992?\u25143?\u65292?\u20027?\u35201?\u30340?\u34892?\u20026?\u26377?\u19979?\u38754?\u36825?\u20123?:\par} -{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab \u27599?\u26143?\u26399?\u30340?\u24773?\u20917?\par} -{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab \u20107?\u20214?\u30340?\u31867?\u22411?\par} -{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab \u36129?\u29486?\u30340?\u25968?\u37327?\u65292?\u36830?\u25509?\u20197?\u21450?\u35821?\u35328?\par} -{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab \u26368?\u22810?\u30340?\u35821?\u35328?\sa180\par} -{\pard \ql \f0 \sa180 \li0 \fi0 osrc\u20013?\u29992?\u20110?\u35299?\u26512?\u30340?\u20195?\u30721?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 def parse_vector(results):\line - points = np.zeros(nvector)\line - total = int(results[0])\line -\line - points[0] = 1.0 / (total + 1)\line -\line - # Week means.\line - for k, v in results[1].iteritems():\line - points[1 + int(k)] = float(v) / total\line -\line - # Event types.\line - n = 8\line - for k, v in results[2]:\line - points[n + evttypes.index(k)] = float(v) / total\line -\line - # Number of contributions, connections and languages.\line - n += nevts\line - points[n] = 1.0 / (float(results[3]) + 1)\line - points[n + 1] = 1.0 / (float(results[4]) + 1)\line - points[n + 2] = 1.0 / (float(results[5]) + 1)\line - points[n + 3] = 1.0 / (float(results[6]) + 1)\line -\line - # Top languages.\line - n += 4\line - for k, v in results[7]:\line - if k in langs:\line - points[n + langs.index(k)] = float(v) / total\line - else:\line - # Unknown language.\line - points[-1] = float(v) / total\line -\line - return points\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u36825?\u26679?\u20063?\u23601?\u36820?\u22238?\u25105?\u20204?\u38656?\u35201?\u30340?\u28857?\u25968?\u65292?\u28982?\u21518?\u25105?\u20204?\u21487?\u20197?\u29992?{\f1 get_points}\u26469?\u33719?\u21462?\u36825?\u20123?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 def get_points(usernames):\line - r = redis.StrictRedis(host='localhost', port=6379, db=0)\line - pipe = r.pipeline()\line -\line - results = get_vector(usernames)\line - points = np.zeros([len(usernames), nvector])\line - points = parse_vector(results)\line - return points\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u23601?\u20250?\u24471?\u21040?\u25105?\u20204?\u30340?\u30456?\u24212?\u30340?\u25968?\u25454?\u65292?\u25509?\u30528?\u25214?\u25214?\u21644?\u33258?\u24049?\u37051?\u36817?\u30340?\u65292?\u30475?\u30475?\u32467?\u26524?\u12290?\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \f1 [ 0.01298701 0.19736842 0. 0.30263158 0.21052632 0.19736842\line - 0. 0.09210526 0. 0.22368421 0.01315789 0. 0.\line - 0. 0. 0. 0.01315789 0. 0.\line - 0.01315789 0. 0. 0. 0.73684211 0. 0.\line - 0. 1. 1. 1. 0.2 0.42105263\line - 0.09210526 0. 0. 0. 0. 0.23684211\line - 0. 0. 0.03947368 0. 0. 0. 0.\line - 0. 0. 0. 0. 0. 0. 0.\line - 0. 0. 0. 0. 0. 0. 0.\line - 0. 0. 0. 0. ]\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \u30495?\u30475?\u19981?\u20986?\u26469?\u20004?\u32773?\u26377?\u20160?\u20040?\u30456?\u20284?\u30340?\u22320?\u26041? \u12290?\u12290?\u12290?\u12290?\par} {\pard \ql \f0 \sa180 \li0 \fi0 \b \fs36 Github\u27969?\u34892?\u39033?\u30446?\u20998?\u26512?\par} {\pard \ql \f0 \sa180 \li0 \fi0 \u20043?\u21069?\u26366?\u32463?\u20998?\u26512?\u36807?\u19968?\u20123?Github\u30340?\u29992?\u25143?\u34892?\u20026?\u65292?\u29616?\u22312?\u25105?\u20204?\u20808?\u26469?\u35828?\u35828?Github\u19978?\u30340?Star\u21543?\u12290?(\u25130?\u27490?: 2015\u24180?3\u26376?9\u26085?23\u26102?\u12290?)\par} { @@ -1062,6 +535,7 @@ https://github.com/joyent/node {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab \u24037?\u20855?: \u22914?{\f1 Homewbrew}\u21644?{\f1 Bower}\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab \u36164?\u26009?\u25910?\u38598?: \u22914?{\f1 free programming books}\u65292?{\f1 You-Dont-Know-JS}\u65292?{\f1 Font-Awesome}\par} {\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab \u20854?\u20182?:\u31616?\u21382?\u22914?{\f1 Resume}\sa180\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs36 \u21019?\u24314?\u20320?\u30340?\u39033?\u30446?\par} {\pard \ql \f0 \sa180 \li0 \fi0 \b \fs36 \u21019?\u24314?Pull Request\par} {\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 \u31532?\u19968?\u20010?\par} {\pard \ql \f0 \sa180 \li0 \fi0 \f1 const dgram = require('dgram')\line @@ -1079,7 +553,6 @@ https://github.com/joyent/node END\line exit 1\line fi\par} -{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs36 \u21019?\u24314?\u20320?\u30340?\u39033?\u30446?\par} {\pard \ql \f0 \sa180 \li0 \fi0 \b \fs36 \u26500?\u24314?Github\u39033?\u30446?\par} {\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 \u20174?\u27169?\u22359?\u20998?\u31163?\u21040?\u27979?\u35797?\par} {\pard \ql \f0 \sa180 \li0 \fi0 \u22312?\u20043?\u21069?\u35828?\u21040?\par} @@ -2466,4 +1939,531 @@ Lettuce.send = function (url, method, callback, data) \{\line request.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\line request.send(data);\line \};\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs36 Github\u39033?\u30446?\u20998?\u26512?\u19968?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 \u29983?\u25104?\u22270?\u34920?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u22914?\u20309?\u20998?\u26512?\u29992?\u25143?\u30340?\u25968?\u25454?\u26159?\u19968?\u20010?\u26377?\u36259?\u30340?\u38382?\u39064?\u65292?\u29305?\u21035?\u26159?\u24403?\u25105?\u20204?\u26377?\u22823?\u37327?\u30340?\u25968?\u25454?\u30340?\u26102?\u20505?\u12290?\u38500?\u20102?{\f1 matlab}\u65292?\u25105?\u20204?\u36824?\u21487?\u20197?\u29992?{\f1 numpy}+{\f1 matplotlib}\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u25968?\u25454?\u21487?\u20197?\u22312?\u36825?\u36793?\u23547?\u25214?\u21040?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 {\field{\*\fldinst{HYPERLINK "https://github.com/gmszone/ml"}}{\fldrslt{\ul +https://github.com/gmszone/ml +}}} +\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u26368?\u21518?\u25928?\u26524?\u22270?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 {\pict\pngblip\picw800\pich400\picwgoal11620\pichgoal5800 89504e470d0a1a0a0000000d4948445200000320000001900806000000562504340000000473424954080808087c086488000000097048597300000f6100000f6101a83fa7690000200049444154789cec9d7b5c5475feff5f0322205e0151040d6f28e6fd12ddd4b44c2bb7b6eca256565a5bd945fd6697ad6d736bcb36bbb8df757fed77b78bb6955959e9ea2615a664199a6869a2602a2a606080a222209cdf1fef3e30c00ccc997366e6ccccebf978f818993933e7337366cef9bc3eaff7c5a6699a0642082184104208f10221be1e002184104208212478a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1042082184104288d7a00021841042082184780d0a1000a74e9dc2534f3d85499326213a3a1a21212158b66c99c36db3b3b33169d224b46bd70e313131983163068e1d3be670dbd75f7f1d292929888c8c44727232962c59e2c9b741082184104288e5a10001505c5c8c679e79067bf7eec5d0a1430100369badc976478e1cc1983163b07fff7e2c5cb810f3e7cfc7dab56b3161c20454575737d8f6fffeefff70d75d7761d0a04158b264092eb8e0023cf8e08378e18517bcf29e082184104208b122364dd3345f0fc2d7545555a1acac0c717171d8b66d1b468d1a85a54b9762c68c190db69b3d7b36de7aeb2decd9b3078989890080f4f4744c9830a14e700040454505ba77ef8e0b2fbc10ab57afae7bfeadb7de8a4f3ef904870f1f46c78e1dbdf706092184104208b108744000b46edd1a7171710080e6f4d8ca952b3179f2e43af10100975e7a29929393f1fefbefd7ddf7e5975fa2a4a404b367cf6ef0fcfbeebb0fa74e9dc2dab56b4d7e07841042082184f80714202e929f9f8fe2e2628c1c39b2c963a3468dc2f6eddbebfe56ff6fbcedf0e1c3111212821d3b767876b0841042082184589456be1e80bf5058580800888f8f6ff2587c7c3c4a4a4a505d5d8db0b03014161622343414b1b1b10db66bddba35626262505050d0e4358e1d3b86b4b434242525213232d2336f821042082184b84d4545050e1e3c888913273699e711d7a10071918a8a0a004078787893c7222222eab6090b0b434545055ab76eedf075c2c3c3eb5ecb9eb4b434dc72cb2d268e9810420821847882b7df7e1b37df7cb3af87e1b75080b88872252a2b2b9b3c76e6cc9906db444646a2aaaacae1eb9c3973c6a1c3d1b3674f00f2854e49493165ccc43ce6ce9d8bc58b17fb7a18c4093c3ed685c7c6baf0d8581b1e1f6b929d9d8d5b6eb9a56ede46dc8302c44554e8950ac5b2a7b0b010313131080b0babdbb6a6a606c78e1d6b60cf555555a1a4a404ddba756bf21aca45494949c1f0e1c33df11688013a76ecc8e36261787cac0b8f8d75e1b1b1363c3ed646cddb887b3009dd45121212d0b973676cddbab5c9635bb66ca9eb1f0200c3860d038026db7ef7dd77a8adad6db02d218410420821c10405880ea64c9982356bd6e0c8912375f7a5a7a72337371737dc7043dd7de3c78f477474345e7df5d506cf7ff5d55711151585abaebaca6b63268410420821c44a3004eb57962c5982b2b2b2ba0a55ab57afc6a1438700000f3ef820dab76f8fc71f7f1c1f7cf001c68d1b873973e6a0bcbc1c8b162dc2e0c18371c71d77d4bd564444049e79e619dc77df7db8f1c61b71f9e597e3abafbec23befbc83e79e7b8e4d08092184104248d04201f22b2fbdf412f2f2f20000369b0d1f7ffc313efae823d86c36cc983103eddbb747626222366edc88fff99fffc1638f3d86f0f0704c9e3c192fbdf4525dfe87e2de7bef455858185e7ae925ac5ebd1a3d7af4c0e2c58bf1e0830ffae2ed11834c9b36cdd74320cdc0e3635d786cac0b8f8db5e1f121818c4d6baef537f11a59595918316204b66ddbc6a43342082184100bc2f99a39300784104208218410e2351882450821c414727373515e5eeeeb611042885bb46bd70e7dfbf6f5f53082020a1042082186c9cdcd457272b2af8741082186c8c9c9a108f10214208410420ca39c8fb7df7e1b2929293e1e0d2184e8437538a78beb1d284008218498464a4a0a1333092184340b93d0092184104208215e830284104208218410e2352840082184104208215e830284104208218410e2352840082184104208215e830284104208218410e2352840082184102f919494849e3d7bfa7a188478940d1b36202424047ffad39f7c3d1462512840082184102f62b3d90c3d3f242404e3c68d3369340db9eaaaab10131383dada5a9c3e7d1aefbcf30ea64f9f8efefdfba36ddbb668dfbe3d468d1a85975f7e19d5d5d54e5f67f7eeddb8f1c61b11171787c8c848f4efdf1f0b162cc09933679a6c7bfcf8712c5ab40837df7c33060c188056ad5a21242404e9e9e92e8ffbd8b163888f8f47484808468f1eedd67bafa9a9c12bafbc82c18307a34d9b36888989c155575d85cd9b373bdcfef3cf3fc7430f3d844b2fbd1431313186f6ad282929c1dcb9739194948488880824242460d6ac59c8cfcf77b8fdebafbf8ebbefbe1ba9a9a968d3a60d424242f0e4934f1a1a839e63d71246bfeb2470612342420821c4cff0c4c4aebcbc1ce9e9e998366d1a424242909191815b6fbd1531313118376e1caebbee3a94949460f5ead5983f7f3e3efae823a4a7a7233c3cbcc1eb64666662fcf8f1a8a9a9c1f5d75f8feeddbb233d3d1d4f3ffd34d2d3d3919e9e8ed6ad5bd76d7fe0c0013cfae8a3b0d96c484c4c44e7ce9df1f3cf3feb7a8f77df7d374e9d3a05c0bdcf46d3344c9d3a152b57ae44fffefdf1c0030fe0975f7ec18a152b3066cc18ac5cb912575f7d7583e7fcfdef7fc7ead5ab111919893e7dfaa0b4b4d4d071f9e5975f70e1851722373717975e7a29a64f9f8eecec6cbcf9e69b58bb762d366fdedcc43d7be8a18770e2c409444747232121013ffdf493a131e83d76ce484d4dc59e3d7b101b1bebf6584880a3114bb06ddb360d80b66ddb365f0f85104274c373986b9c73ce395acf9e3d0dbd86cd66d3c68d1b67d288ea79efbdf7349bcda6ad5ab54ad3344ddbb16387f6eebbef6ad5d5d50db62b2f2fd7468c18a1d96c36eda5975e6af0d8d9b367b59494142d242444fbcf7ffe53777f6d6dad76fdf5d76b369b4d7bfef9e71b3ca7b4b4545bbf7ebd565a5aaa699aa6dd76db6d9acd66d3d2d3d35d1af7b265cb349bcda6fde31fffd06c369b367af468ddeffddd77dfd56c369b76f1c5176b95959575f76fddba550b0f0fd7e2e2e2b4f2f2f206cfd9bc79b3b67bf76eadb6b6563b78f0a0dbfb56fcee77bfd36c369b367ffefc06f7ffeffffeaf66b3d9b449932635794e5a5a9a76e8d0214dd3346de9d2a59acd66d39e7cf249b7f6efceb10b245c3d87f15c670e0cc1228410424c66c9922538f7dc7311191989c4c4443cf0c003387efc7893ed4e9c3881458b1661fcf8f1484c4c44787838e2e2e270cd35d7e0db6fbf6db0edd2a54b111222976d1563affed9c7da2f5dba1453a64c41af5ebdd0a64d1b74e8d001175f7c31de79e79d66c7fcf1c71f232a2a0a13274e04000c193204d3a64d43ab560d8325dab66d8b871e7a0800b071e3c6068f6ddcb8117bf6ecc19831633079f2e4bafb6d361b5e78e10500c03ffef18f06cfe9d8b123c68d1b878e1d3b363b3e471c3a74080f3ef820eebcf34e4c9a3449f7f315afbefa2a00e0cf7ffe738315fe912347e2a69b6e427171313efcf0c306cf39fffcf3919292029bcd064dd3dcde37009c3c7912fffef7bfd1b66d5b2c58b0a0c163f7df7f3f7af4e881b4b4341c3870a0c163975f7e39ba77ef0e0086c7e0ceb17386b31c90fdfbf7e377bffb1dfaf4e95317e63678f060dc7befbd28292969b06d6565259e7ffe790c1a3408515151e8d0a103c68c19830f3ef8a0c9fe0e1e3c88909010dc71c71d3878f020a64e9d8ad8d85844464662d4a85158bb76adde8f8378180a10420821c444e6cc9983071f7c10c78f1fc7dd77df8da953a762ddba759830614293bc89ddbb77e30f7ff8035ab56a85dffce63778e8a1873061c204ac5fbf1e63c68c415a5a5addb6c3860dc3534f3d054092d9172c5850f7cf3e2764f6ecd9387cf8302eb9e412cc9b370f53a74e455e5e1e6ebdf556fcf18f7f7438e6caca4afcf7bfffc5c489139b845439428992c6e264fdfaf500e0500cf4ecd9137dfbf6c5a14387b07ffffe16f7d1129aa6e1f6db6f47a74e9df0f2cb2fbb3d013f73e60cbef9e61b44454539cce1b8e28a2b00005f7ef9a5a1f136c7b7df7e8b3367cee0a28b2e4254545483c76c365bdde7e9c93178e2d8d9878315161662d4a85158ba7429060d1a843973e660c68c19e8d9b327de7efb6d1c3d7ab46edbaaaa2a4c9c38118f3ffe386a6b6b71fffdf7e3d65b6f454e4e0e6ebae9263cf1c4130ef797979787d4d4541c3a7408b7dd761b6ebae926ecdab50bd75c730d366cd8e0f2b889e7610e082184109f71fa34b0678ff7f7dbbf3fd0a68df9affbcd37dfe06f7ffb1bfaf4e9832d5bb6d4adea3ffbecb318376e1c0a0b0b91949454b7fd80010350585888e8e8e806af939f9f8ff3ce3b0ff3e6cdc3eeddbb0188233164c810fce94f7f425252925331f1e38f3f36c915a8aeaec615575c81e79f7f1ef7dc730fba75ebd6e0f12fbef802274f9ec475d75de7d2fb7ce38d3700349daceeddbb1700909c9cecf0797dfbf6456e6e2e727373d1ab572f97f6e58cc58b1763e3c68df8fcf3cfd1b66d5b1c3b76ccadd7f9e9a79f505b5b8b5ebd7ad5394cf6f4e9d307009093936368bccdd1d2e7a6c6909b9bebb331183d761f7ef8214a4b4bf1d7bffe150f3cf04083c72a2a2a1a8895975e7a09191919b8f2ca2bb17af5eabae3f2d4534fe1bcf3cec3c2850b3179f2645c70c1050d5e67c3860df8d39ffed420117ffaf4e998346912162d5a844b2eb944f7b88967a000218410e233f6ec01468cf0fe7eb76d03860f37ff75df7cf34d00c0134f3cd120a4283c3c1c0b172e6c52bdaa7dfbf60e5f2721210153a64cc192254b70e4c811242626ba3c0647657ec3c2c2307bf66cac5fbf1ee9e9e9b8f5d65b1b3cfef1c71fa375ebd60d426f9cb164c912a4a5a561d8b0619839736683c7549859870e1d1c3e57dd5f5656e6d27b71c6eeddbbf1f8e38fe3de7befc5f8f1e30dbd96b7c61cec635002232222a2c9639191910dfe7ee38d3710121282975f7eb98128ecdcb9339e7cf249dc79e79d78edb5d79a0890a4a424fce10f7f68709f0a53dbba75ab5be3269e810284104288cfe8df5fc4802ff6eb09b2b2b260b3d93076ecd8268f5d74d1450e57d8bffefa6bfcf5af7fc5e6cd9b515c5c8caaaaaa068fe7e7e7eb1220870e1dc25ffef217a4a7a7e3f0e1c3a8a8a868f07841414183bf6b6b6bb17af56a5c72c9254e0591e2a38f3ec2dcb973111f1f8f952b57223434d4e57199457575356ebdf556242424d4e52600cd57bf5abc78719389f3b5d75e8b214386786c9cf61c3f7e1cafbcf24a93fbe7cd9be774c26f363b76ecc0279f7cd2e0be4e9d3a61ce9c395ed9ffd5575f8dc71f7f1cf7dd771fd2d2d270f9e597e3e28b2fc68001031a6c575e5e8e9f7efa098989890edd18253877ecd8d1e4b1a143873afc1e74efde1d99999926bd13620614208410427c469b369e71227c855a45eed2a54b93c75ab56ad5a42ce9c71f7f8cebafbf1e6ddab4c1840913d0bb776f444545212424045f7ef925366edc88caca4a97f7bf7fff7e9c77de79282b2bc39831633069d22474e8d001a1a1a13870e000962d5bd6e4f5befaea2b1c3b760cd75e7b6db3affdc9279f60ead4a9e8dab52bbefcf2cb06a1640a35997694706f7fbf3b09e78a850b1762c78e1dd8b06103dad8c5d1359703f2d7bffe15797979757fdb6c36f4ead50b43860cf1ca984b4b4bf1f4d34f374858b7d96c983973263a74e8e095317cfffdf778fae9a71bdc9794945427403c3d861e3d7a60cb962d58b06001d6ad5b878f3efa08808883f9f3e7d78565a9fdc4c7c73b7c9dae5dbb0270ecc4381b5bab56ad505b5bebd6b88967a000218410424c424de28e1e3dda2414eaecd9b33876ec187af4e85177df934f3e898888087cf7dd77e8d7af5f83edf3f3f39b54996a89975f7e1925252558ba742966cc98d1e0b1e5cb9763d9b2654d9ef3f1c71fc366b3e1b7bffdadd3d7fde0830f307dfa7474ebd60debd7af47efdebd1d6ed7ff576b49e5133426373717369bcd699e812b64656541d334872e13006cdab409212121e8d0a1034a4b4b01a049f5287b7af7ee8d909010ecdfbf1f3535354d5c1d95776164cc494949cd4e80d5e7e62ccfc48c31dc76db6db8edb6db5a1c83278f5dfffefdf1de7befa1a6a606df7fff3dbef8e20bfced6f7fc39c39731015155527c80034484ab7a7b0b01080f35031e21fb00a16218410621223468c80a6690e85c3a64d9b9a4c42f7eddb8701030634111fb5b5b5d8b46993c37dd86c36d4d4d4387c6cdfbe7db0d96c9832654a93c79c89994f3ef904175c708143d70600de79e71d4c9b360d898989d8b871a353f101d487c7ac5bb7aec963fbf7ef476e6e2ece39e71c87792aae72f9e597e3ce3bef6cf2efa69b6e0220eed39d77ded9ec64db9e8888085c74d1453875ea14befaeaab268f7ffae9a7006038d7a439ce3fff7c444444e0ebafbfc6c993271b3c565b5b8bcf3efb0c369bad490e919978e3d829424343317cf8703cf2c82358be7c390060d5aa55008076eddaa177efde3872e408f6eddbd7e4b9aa12d8f040b24e83100a10420821c4246ebffd760052f54aadbe0352eaf5f7bfff7d93ed7bf6ec899c9c9cba555d404289162c5880ecec6c87f1ec313131387cf8b0c3fdf7ecd9139aa63529d79a969686d75e7badc9f65959593874e890d3f0ab65cb9661c68c19484a4a42464686c3b02b7bc68e1d8b949414646464e03ffff94fddfdb5b5b578f4d1470100f7dc734fb3afa1701652357bf66cfcf39fff6cf2eff9e79f0720d59afef9cf7f62f1e2c52eed0700eebdf75e00c01ffef08706216a5bb76ec58a152b101717e750d4994554541466cc988193274f36e903b264c912e4e5e561e2c4892d7efe4670e7d855545460cf9e3d4ebf8ff6646565390cef524e877d38ddcc9933a1691a1e7ef8e106a2fdd8b16378e69967eac2d788ffc2102c420821c4242ebcf0423cf0c003f8dbdffe8681030762ca9429080b0bc3aa55ab10131383f8f8f80613eb79f3e6e19e7beec1b061c370dd75d7212c2c0c5f7ffd35b2b3b3f19bdffca6c1445071d96597e1bdf7dec3d5575f8d61c386212c2c0c63c78ec5e8d1a3317bf66cbcf9e69bb8e1861b70fdf5d7233e3e1ebb76ed425a5a1a6ebcf146ac58b1a2c16ba9387c4702e4cb2fbfac9b085e72c92578fdf5d79b6cd33889392424046fbef926c68f1f8febafbf1ed75f7f3dba77ef8ef4f4746cdbb60d175f7c31e6cd9bd7e475e6cf9f5f574657393f8b162dc2bffffdefbaf15d73cd35cd7ef6461af14d9d3a151f7df4113efcf0430c1b360c93274fc62fbffc82152b5640d334fceb5fff42dbb66d1b3c67d3a64d75a24eb9163939397522d466b3d555457385e79e7b0e1b366cc0cb2fbf8c1d3b7660d4a851c8cecec6ead5abd1a54b17fcfdef7f6ff29cd75e7badeef3526ec1ead5ab71e8d02100404a4a4a9d786809778e5d666626c68f1f8fb163c7b6d8a3e4adb7dec23ffff94f5c7cf1c5e8d5ab173a75ea849f7efa09fff9cf7f10111181b973e7d66d3b7ffe7c7cfae9a758b56a15860c19822baeb802a74f9fc6071f7c8063c78ee191471ec185175ee8d2fb52186dd4484cc6ebbdd78943b66ddba601d0b66ddbe6eba11042886e780e6bc892254bb49494142d3c3c5c4b4848d0eebfff7eedf8f1e35a525292d6b367cf06db2e5dba541b3a74a8161515a575eedc59bbeebaebb45dbb76690b162cd0424242b48d1b3736d8bea8a8489b3e7dbad6a54b172d3434540b0909d1fef4a73fd53dfecd37df68e3c78fd73a75eaa4b56bd74e1b3d7ab4b66ad52a6dc3860d9acd666bb0ed800103b4214386387c0f4b972ed56c369b161212a2d96c3687ff1abf17c5eeddbbb51b6eb8418b8d8dd5c2c3c3b57efdfa690b162cd0ce9c39e370fba4a4242d2424a4c93fb57ffb313be3c081039acd66d3468f1edde2b68e387bf6acf6ca2baf6883060dd2222323b5e8e868edaaabaed2366fdeec707bfbcfc7d9b8f5525252a2cd9933473be79c73b4d6ad5b6bddba75d366cd9aa5e5e7e73bdcfef6db6f77380675dfb871e3748f41cfb153dfa9c6fbf9f2cb2f9b7cd7323333b57befbd571b326488161d1dad4546466a7dfbf6d566ce9ca9fdf8e38f4d5efbcc9933da73cf3da70d1c38508b8c8cd4dab76faf8d1e3d5a7befbdf79a6cab8efd1d77dce1f03d5d72c9252d1e0f57cf613cd799834dd32809ad40565616468c18816ddbb631ae9110e277f01ce67fe4e4e4a07ffffe78eaa9a7ea3aac136206ebd6adc395575e89850b17baecc0f81a57cf613cd79903734008218490204455bf6aa9fc2e217a51d5bcf4f4af21c105050821841012843cfae8a3a8a9a9c1e0c1837d3d14122064646460debc7978eaa9a7d0b66d5b4c9a34c9d7432216850284104208218418e6cb2fbfc41b6fbc81810307e2f3cf3f474c4c8caf87442c0aab60114208218410c3309f88b80a1d1042082184104288d7a00021841042082184780d0a1042082184104288d7a000b11867cef87a04841042082184780e0a108bf1c413be1e012184104208219e8355b02c465999af47400821ee939d9dedeb211042886e78eef22e14201683028410e28fb46bd70e0070cb2db7f878248410e23eea5c463c0b0588c5a0002184f8237dfbf6454e4e0ecacbcb7d3d146251727381a9538137de00860c91fb3efb0cf8fdef818d1b81b66d7d3b3e42dab56b87be7dfbfa7a18410105884eb66ddb86279e78029b376f86a669b8e0820bf0c20b2f60883a9bda919d9d8d79f3e6e1ebafbf46ebd6ad71d55557e1e5975f466c6cacd3d73f7e1ca8ad0542989d4308f13378e126cdb17fbfdcfee63780ba0c9e3e2db7b1b1c08001be191721c4fb709aab83acac2c5c7cf1c53878f020162c58803ffef18fc8cdcdc5d8b163919393d360db23478e60cc9831d8bf7f3f162e5c88f9f3e763eddab598306102aaabab9dee43d3e882104208093c7272804e9d809898fafb1213e5f6c811df8c8910456d2d70d555c0faf5be1e4970400744074f3ef924a2a2a2b079f36674ead40980c43b272727e3f1c71fc7871f7e58b7ed73cf3d878a8a0a6cdfbe1d89bf9e61cf3bef3c4c9830014b972ec55d77dde5743fc78e01d1d19e7d2f8410428837c9c9019293019badfebe6edde4363fdf37632244515202fcf7bfc0ac59be1e4970400744075f7df5152ebbecb23af101005dbb76c5983163b066cd1a9c3a75aaeefe952b5762f2e4c975e203002ebdf452242727e3fdf7df6f763fc78e993f76420821c497ecdd2b02c49ed6ad81b8383a20c4f71417cb6de7cebe1d47b04001a283aaaa2a44464636b9bf4d9b36a8aaaac2ae5dbb0000f9f9f9282e2ec6c891239b6c3b6ad4286cdfbebdd9fd508010420809347272807efd9ade9f984801427c4f5191dcc6c5f9761cc10205880efaf5eb87cd9b37a3b6b6b6eebeaaaa2a64666602000a0a0a00008585850080f8f8f826af111f1f8f92929266f34028400821840412bffc22212e8d1d10004848600816f13d7440bc0b734074307bf66cdc7befbd98356b161e79e411d4d4d4e0cf7ffe338e1e3d0a00a8a8a868701b1e1edee435222222eab6090b0b6bf27868e85cbcf452477cf249fd7dd3a64dc3b469d3cc7e3b841042885750755a1c0990c444e09b6fbc3b1ed23c5bb648a96407d39880a5a80868d50ae8d8b1febee5cb9763f9f2e50db62b63a52053a000d1c1dd77df8dc3870f63d1a24558b66c190009a97ae49147f0ecb3cfa2edaf45cc55985665656593d73873e64c836d1a131fbf1893270fc75ffee2897740082184781f2540faf469fa181d106b71f22470e185c0b265c0cd37fb7a34dea3b858dc0ffb36088e1680b3b2b23062c4082f8f2ef06008964efefce73fe3e79f7fc6a64d9bb073e74e646666a2a6a6060090fcebd28e0abd52a158f6141616222626c6a1fb0188f2660816218490402227479c8ea8a8a68f2526ca75efd7f539e263f2f3819a1ae0d7e08ea0a1a888e157de840e881b74ecd811175e7861dddf5f7cf105ba77ef8efefdfb0300121212d0b973676cddbab5c973b76cd982a1438736f3da1420841042020b5582d7110909725b5000f4eae5bd3111c7fc9ace8a5f7ef1ed38bc4d511113d0bd091d1083ac58b102df7df71de6ce9ddbe0fe2953a660cd9a35386257da233d3d1db9b9b9b8e1861b9cbe1e050821849040c351095e059b115a8b6015202a048b78073a203ac8c8c8c0d34f3f8d891327223a3a1adf7efb2d962e5d8a2baeb80273e6cc69b0ede38f3f8e0f3ef800e3c68dc39c3973505e5e8e458b1661f0e0c1b8e38e3b9ceea34387fa5859420821c4dfa9ad0572738199331d3fae1c10e681588360152045454033012ac464e880e820313111ad5ab5c2a2458b70fffdf7e39b6fbec1b3cf3e8b55ab56212424a4c9b61b376e44efdebdf1d8638fe1c5175fc4e4c993f1f9e79f3bcdff00c40109b61f3d2146a8aa027af706366ef4f5488837a8ae9644661e6fffe1c811c9ef70e680b46b07b46f4f07c42a2801126cd1187440bc0b1d101df4ead50bebd6ad7379fb010306e8da1e10015252220960a1a17a474848f071f830b07f3fb073273076acaf47433c4d6929f0d34fc0f6ed3cdefe4273257815090914205621181d909a1a79bfcc01f11e74402c46a74e80a6c9459610d2327979725b52e2db7110efa0ce8daa6b31b13e3939d25f2129c9f93689890cc1b20aea38049300f9e517997b5180780f0a108ba11ae0049bf54988bb2801124c17cb6046f500fbf967df8e83b84e4e8e8449b66a26e62231910e8855282800dab6ad9f9407036a41832158de8302c462508010a20f3a20c18572402840fc87e64af02ad88cd01a689a0890810325bfeed4295f8fc83b1417cb2d1d10ef410162313a74905b0a10425c830224b8500e0843b0fc87bd7b817efd9adf263111282c94587ce23b4a4b81ca4a60d020f93b589c653a20de8702c462b46f2fb7c1f2a327c4280c1c77db730000200049444154c10a2ee880f8179595c0c183ae392035353caebe4625a007a30069ddba7e0e463c0f0588c568d54a12d1e98010e21a7440820b7b072458e2d3fd99fdfba50f484b0284cd08ad41b00a105582d766f3f54882070a100b121b4b0142882bd4d64a19deeedd29408205e5809c39039497fb762ca4655c29c10bb019a155500264e040b90d16015254c4fc0f6f43016241284008718dc242694c376c984c4c6b6b7d3d22e269ec4b94330fc4fae4e44845a5ae5d9bdf2e36564260e880f896820239163131405858f00890e2620a106f43016241284008710d157e356c98888fe3c77d3b1ee279caca806edde4ffcc17b03eaa02564ba12d361b9b115a818202f97dd96c224282458014153101dddb5080589098180a10425cc15e8000c173b10c664a4beb2b2ad101b13e7bf7b61c7ea5603342df939f5f2ff0834980d001f13e142016243636787ef48418212f4f7ae7a80ecbcc03097ccacaa4a95d68281d107f2027a7e512bc0a3623f43dca0101824b80d001f13e14201684215884b8465e1e70ce394074b4fc4d0112f89496cac4a873670a10ab73fcb81c23571d103623f43d8d054830cc45aaabe5bc4207c4bb50805890d858f9319c3debeb9110626d9400898991bf8365b52e98292b13d72b2e8e2158562737576ef584601d39c2f2cabea2b6560a7ba88a64c1e28028914507c4bb50805890d858b9e56a2e21cda304486424101ecedf4ca0535b2b02a45327a04b173a20564795e0eddbd7b5ed1312a4bcb27da533e23d8a8ba51964b08560a9850c3a20de8502c482280162d4faacae067af502d6af373e2642ac86a6d50b109b4dc2b02840029b93274584d001f10f7272442876e8e0daf66c46e85b540f90601320c5c5724b07c4bb50805810154e625480141602070e009b36191f132156a3a40438754a0408103c17cb6046ad8cd301f10f54095e57613342dfe248809c38218b99810c1d10df400162419403627432a54e26ca062724905025789500a10312f89495c96dc78e2240e880589bbd7b5daf800548b3c290103a20bea2a0403e7f3511578ba1817e5e2d2e9630dea8285f8f24b8a000b1209d3a4948895107440990bd7b8d8f8910abe14880d001096cec1d90b83811249595be1d13718ca6e97740c2c244585280f8868202f9fc5bb592bf83a5b8872ac1db52b34c622e14201624345426536609909c1c56152181475e9eac5aa9b8dd9898c05fa90b761a3b20407dfc36b116478f4ace8e1e0102b019a12fb16f4208048f00611342df40016251cce805a24ee2274e305481041e7979408f1ef5ab560cc10a7c9403a292d001e681581515faab57802424d001f115f63d4000f3c2c1ad0e9b10fa060a108b628600292890500580792024f05015b0144c420f7ccaca244e5b85ea005c5cb12a3939924fd0ab97bee7d101f11d8d05889a3f04fa79b5a8880e882fa000b1286609908b2e9215620a101268341620d1d13241ada9f1dd988867292dad9f14a9154b3a20d6242707484a92fe3c7a50cd0889f7692c405ab512b731d0054871311d105f40016251cc58cd2d2890d5a773cea1002181872301a269c0f1e3be1b13f12ca5a53221026462dbb123058855d19b80ae484890858453a7cc1f13714e75b53801aa14b222189c653a20be8102c4a298e58074eb2665102940482071ea945c141b876001817fb10c66541774059b115a17bd257815aa1921c3b0bccbcf3fcb028ebd030204be00a9ac943c590a10ef430162518c0a90d3a7e5629d9020ab502cc54b0289c625780171400026a20732f60e08c0668456e5ec59e0a79fdc7740000a106fd3b809a12226c6f862a895611774df4101625162632594c4dd0ea4858572dbad9b5c04f6ed636c3c091c9a132081bc5a17ecd001f10f0e1e1411624480300fc4bb34274002f99caa04081d10ef430162518c96bfb33f9924278b9051933642fc9dbc3ce997e3a8663d1d90c0c53e091da0036255dc2dc10b006ddac831a600f12e0505525d4e9d4715812e40d402061d10ef43016251940071d7fa6c2c4000e68190c0212f4f62c555c75e409a1246445080043265654d43b0e880588f9c1cf92daa7c0ebdb014aff7292800e2e3a574b23d812e401882e53b28402c8ad184dafc7ca997dfae1dd0bdbb548ca100218142e30a588a40bf58063b8d1d90b8389940d4d6fa6e4ca429393940dfbe4d27b3aec26684dea7711774454c8c2cea689af7c7e40d8a8a64aed4a68daf47127c50805814331c906edda407486828d0a70f0508091c9c091076430f5c2a2b818a8aa60e484d0d8fb9d5c8c971af0296820e88f769dc0344111323f93c274e787f4cde8025787d07058845e9d851568f8c0a10054bf19240820224f8282b93dbc60e08c03c10abb177af7bf91f0a3623f43ecd091020709de5e2620a105f4101625142428c95bf6b7c3261295e12285455c9f79b2158c18512208d1d1080792056e2d429110f4604484282884a77ab4012fd1414346d4208182f8863758a8a98ffe12b28402c8c915e208e04c8a14312c240883f73e488c423d301092e4a4be5960e88b5d9b74f6e8d3a209a565f4e9e78963367e4bc49078478130a100be3ae00d1b4a6ab19ea62a02e0e84f82b8e7a8028a2a303f74219ec387240dab5936a4b1420d6c148095e057b817817fbbe618d0974014207c4775080581877c349cacbc5066fec8000cc0321fe8f12203d7a347d4c556c2181872307c466633342ab9193230b018dfb49e84195ef6522ba7770d6841090ea501111812b40e880f80e0a100be3ae03e2e864121b2b2b871420c4dfc9cb93d8ff8888a68f4547cb4a794d8df7c7453c4b599954f48b8a6a783f9b115a0ba309e8805cab2223e980788be6040810b8b975a74f03274fd201f115142016c64c0162b3c945810284f83bce2a6001f5abae6ab59c040eaa0788cdd6f07e3a20d6a1b212f8f453e0a28b8cbd8ecdc652bcdea4a040045f870e8e1f0f5401a29a10d201f10d142016c65d01a24edaf1f10def67295e1208342740a2a3e59661588147e32ee80a3a20d661f56ab966cd9c69fcb5d88cd07ba826848dc5bdc248454e2b4301e25b28402c4c6cace4735455e97b5e41815ca81b77f664295e1208508004278dbba02bba74a10362155e7f1d38ff7c60c000e3af4507c47b38eb01a2085407449d371882e51b28402c8cbbf5b79d9d4c9293e5b502f144428283da5ae0f0e19643b0f81d0f3c4a4b1d3b207171e280689af7c744ea397408f8ec33e0ce3bcd793d3623f41ec12a4094034201e21b284074f2dd77dfe19a6bae41b76edd101515859494143cf3cc33a868d460233b3b1b93264d42bb76ed10131383193366e0984e0f534da6f45a9fcd091000c8cdd5f77a845885a347c511742640d40a391d90c0a3acccb90352512195ff88ef58ba545cf71b6f34e7f51212e45a565b6bceeb11e7386b42a8085401525404b46f0f8487fb7a24c1492b5f0fc09fd8b973272ebef86274ebd60d73e7ce45747434bef9e61b3cf5d453d8b66d1b3ef9e41300c09123473066cc1874ead4090b172e447979395e7cf145ecdcb9135bb66c415858984bfb530e883b02a44f9fa6f7abfb7272c42627c4df68ae07082089949191142081486929d0bb77d3fbed9b11b66debdd3111a1b61678e30de0a69ba4378b192426ca62c3b1638cd1f734c1ec80f0bbe53b284074f0de7befa1aaaa0a6bd7ae454a4a0a00e0ce3bef446d6d2dde7aeb2d1c3f7e1c1d3a74c073cf3d878a8a0a6cdfbe1d89bf16343fefbcf33061c2042c5dba1477dd75974bfb332240c68e6d7a7fdbb6b2cac14474e2afb4244080c0bd58063bcd392080ac663a1228c4f3a4a7cb6f73d62cf35ed3be192127899ea3bc5cfeb524404e9d922a6781e416b009a16f6108960e2223230100718dce865dbb76456868285ab76e0d0058b97225264f9e5c273e00e0d24b2f45727232de7fff7d97f7d7a183d4bdd7234054177467271356c222fe4c5e9efc2e9c958b0424119d0e48e0e12c09ddde0121bee1f5d781fefd810b2e30ef35d98cd03b34d7055d11a8b97574407c0b05880e66ce9c892e5dba60d6ac59f8fefbef71f8f061ac58b102fff8c73ff0e0830f22323212f9f9f9282e2ec6c891239b3c7fd4a851d8be7dbbcbfbb3d9f497e22d2911dbdad9c984bd40883fd35c052c051d90c0a3b616387edc71127a4c0c10124201e22b7ef905f8f863493e7756c6d51de2e264018e89e89ea5a5268480fb0571ac4e511105882f6108960eba75eb86afbffe1a575e7925860d1b5677ff1ffef0073cfdf4d30080c25f9713e21b37e1f8f5be929212545757ebca03d1f3a36fe964929c0c2c5b2617f410ca4fe2671c3cd8b200a10312789497cb39cb9103121a2ae74996e2f50defbc23c7e6d65bcd7dddd050b98ed101f12c6acee060ca5247a03a200cc1f22d14203af8f9e79f71c515570000fef5af7f212626066bd6acc1b3cf3e8b2e5dbae0befbeeabab8615ee20503222220200505151e15480cc9d3b171ded96f98e1e05befb6e1a80692e8d519dac9b13201515b25df7ee2ebd242196212f0f183fbef96da2a3eb73454860505626b78e1c1080cd087d85a649f8d5d5577b662599cd083d4f7ebe54826aae8043200a104d732d046bf9f2e558be7c7983fbcad409891882024407cf3cf30cf2f3f3919393836ebfcef07ffbdbdfa2b6b6168f3efa28a64d9b569727525959d9e4f967ce9c01509f4be288c58b1763f8f0e1757f4f99a2afbca45acde8dad5f1e3aa146f4e0e0508f12f348d2158c14a69a9dc3a7240009944d001f13edbb6013ffc002c5ce899d7673342cfd352052c40847f4848609d574f9d92c5d8961c9069d3a661dab4860bc0595959183162840747171c300847079b366dc2b061c3eac487e237bff90d4e9f3e8d1d3b76d4855ea9502c7b0a0b0b111313e372f815a03f07a4a0407e50bfe6c33721290968d58a7920c4ff2829918b0643b0820f3a20d6e4b5d7c4a59838d133af4f07c4f3b82240424244fc079200514d089903e23b284074505d5d8d9a9a1a87f703c0d9b36791909080ce9d3b63ebd6ad4db6dbb2650b860e1daa6b9fee0890e64e26616140af5e1420c4ff70a5042f2002e4f871e0ec59cf8f897887961c902e5de880789bd3a781e5cb813bee907c0d4f4007c4f3b8224080c07396d5f9823920be83024407c3870f47565616721bb5125fbe7c394243433178f06000c0942953b066cd1a1cb15bba494f4f476e6e2e6eb8e1065dfb345b80002cc54bfc135705888a57569356e2ff2807c459f9e5b8383a20dee6c30f8113274480788ac444294070e284e7f611ecb4d4055d1113a3bf279995a103e27b284074f0f0c30f23242404a3478fc69ffffc67fcbffff7ff70e5955762d5aa5598397326bafe9a78f1f8e38fa34d9b3618376e1c962c5982850b17e2861b6ec0e0c1837187ceb3756cac849dfc9a3ed222ae081096e2f51cb5b5c0a38f4ab526622e7979404444cb178ce868b9651856e0505a2a49b2cea257bb74916daaaabc3bae60e6f5d7a52044af5e9edb877d3342623e2df50db327501d10556298781f0a101d0c1e3c181b366cc0b061c3b068d122cc9b370f070e1cc073cf3d87575f7db56ebbc4c4446cdcb811bd7bf7c6638f3d86175f7c1193274fc6e79f7fae2bff03d05f7fdb95d58ce464e0c0015eac3d416e2ef0c20bc09a35be1e49e0919707f4e8d172af8140acd812ec949539cfff00ea45a95ad5249e252707c8c830b7f3b923d88cd0b39495c9e266300a90e26209e9d439252326c22a583a39efbcf3f0e9a79fb6b8dd800103b06edd3ac3fb5393a963c75a1616353552b6d71507a4a606d8bf5fbad712f3f8f65bb93d7cd8b7e308445ca98005d00109449c75415774e922b73fffec5a380931c61b6f8820bcf65acfee475dcbe8807806579a102a024d80b009a1efa10362719403e24aec655191080b570408c0302c4f909929b71420e6430112bc9496bae6803011ddf39c3d2bcd6c6fb90568a6a2bc2984874b92301d10cf10ec028409e8be8502c4e2e81120ae9e4ce2e381a8280a104f4001e2395c1520e1e1f2fd0ea48b65b05356d6bc03a2040813d13dcf7fff2b4ebba7c3af142cc5eb3994b06bae0bba22264616026a6b3d3b266fe14a1342e25928402c4ebb7612a368a600b1d99888ee092a2aa429576c2c70e890af47635d0e1ed49fa47fea94080a570408c05e2081464b0e4844847473a603e2795e7f1d183e1cd05951de6d588ad773141488b0080f6f79dbd858111f81d2049c0e88efa100b138369bfcf05d59cd2d28908641aea87a96e2359fac2c094fb8f65ab9603a68194300cc9d2b9f91a6b9fe1c574bf02a2840028b961c1080cd08bd416121b076adf7dc0f800e882771b502161078c53de880f81e0a103fc0d55e20050540d7aeae3585a203623e9999b2127bd555f5050148538a8a801d3b44b0b98a5e011268f1cac14e4b49e8804c26e880789665cbc4919f3edd7bfba403e239825580681a1d102b4001e207b8da0048cfc924395956b3cacb8d8d8dd49399098c1801f4ec297f330fc431cac27ffd75d79f939727c2dad50a477440028b96caf00274403c8da649f5abebaf6ff958984962a2ac56bbda0b8bb88eab4d0881c01220e5e5d286800e886fa100f103f438207a04084017c44c323381f3cf07ba7797bf29401ca39acabdfbaee4cdb8425e9e5c285bb958389c0e48e0505929df135742b0e880788eafbe923e47de0cbf02ea27c82ac7919847b03a20ea3c4101e25b2840fc003d02c4d5d58cbe7de59602c41c8e1e9549726aaaac0e4645518038a3ac0c983913387e1c58b9d2b5e7b85a014b41072470508e594babee717174403cc9ebaf03bd7b0363c77a77bf6c46e8196a6b250ac255011248d50555c3528660f9160a103fc0130e48c78e72c1a6003107557e3735550a0774efce4a588e387346fe8d1a055c7289eb61581420c14b69a9dcbae28014177bb64c6865a58458ae5fefb97d5891aa2ae0830f803bee90f39b37510284e7537339764c8aa6b83a670002c759a603620d2840fc0057aa605555c98f4acfc98495b0cc2333530a00a8f0ab1e3de8803842ad6677ea24a11c1b3600fbf6b5fc3cbd02242606387102a8ae766b98c442e87140ce9ead172c9e203b5b4a486fdae4b97d5891bc3c0983bbe002efefbb5d3b1197bc56998b9e26840a57f351ad4e519108691556467c0305881f101b0b9c3e2dff9ca12a2ee93999b01296796466d6bb1f8008110a90a6a8c961c78ec0942940870e92d8da1c555572b1d4eb80d8ef8ff82f7a1c10c0b361583b77ca6db09d37f7ef975b5560c3dba4a488f823e6a142da82d101292e96f7e24ac550e2392840fc005792bfdc59cd5002444f3f06d2949a1a60eb5611200a0a10c7d84f262323a59ce7d2a5b272ed8c2347e43bea8e00611896ffa3c701013c9b88ae04c8debd9edb8715397040266bcae1f536030600bb77fb66df814a41812c9829e1ee0a8122405882d71a5080f801b1b172db9cf5e9ae0039718295638cb2678f94f56b2c407efe5956ef493d8d279377de298990ebd6397f8ede1e204060556c09764a4ba5fa595454f3db79db0109a6859b0307e49ce66a153ab3494991cfbcb9850aa28f8202f9cde839a6812240d884d01a5080f801ae0a90b0307d318daa14af9ed5bcddbb81fff99fe0baf8b64466a6ac248d1a557f5ff7eef21979b3724b6d2df0f0c33259b02a8dc369860f07860e6d3e195d09901e3d5cdf0f1d90c041f5006929f9b97d7ba0756bcf3b202929c1b77073e080efc2af00f9ccababeb43c18871f414ad51048a00292aa200b10214207e80ab02a45b377d154a7af796ed5d8d673e7b16b8e516e09557a41e3c11befd1638f75c499654a850056f566ec9cd055e7c51fa6b5895b23299244644d4df376b16b0668df395ebbc3cb9584446babe1f0a90c0c1952ee8407d3889a71c9092125950983245fe0ea63c102b08108061586612cc02a4b8982158568002c40f888a921adc2de580e83d998487034949ae5f485f7a09f8fe7bf9ffb7dfeadb5720a312d0edf1453342754cac7c6cd464d25e28df7cb3c497bff596e3e7e8ad800588c869db36302e96c14e69a9eb9db7e3e23ce74ca8f0abdffe56dfc24d20e06b01121f2f052b98886e1e7afa86296263a58c7a730571fc013a20d68002c40fb0d95aee05e2cec90470bd146f4e0eb06001306f9e3c47f5bd08764e9e0476ed6a2a40a2a26415de9b02441d93cc4ceb86c8a9701a7b3a759255e5d75e733c6e770408c05e20814259996b0e08e0590764e74e09731d3c58be8fc12240cacb45c8fb5280d86cac846536ee3a20807f2fec681a1d10ab4001e227b4547fdb9d9309e05a29deda5ae0aebbe4f59f7e1a38ff7c0a10c5b66df2f934162080f72b616566ca4a6171b1f42ab022cec26966cd92efe1d75f377dcc5d011228e102c18e1e07a44b17cf3a202929224282a984b9ca29f3a50001e4b3670896399c3d2b423d1805485999bc7f3a20be8702c44f68c901c9cf775f80ecdb27a5649df1af7f01191972dba68d4cb6bfff5e1a53053b9999e2769c7b6ed3c7bc29402a2a801f7e00eebdb77e5c56c49103024857f49e3d9b26a3d7d6ca6748072478d1e380c4c579d601193448fe9f9cec9b52bcdf7c232130dec42a0264c000a938e8c94ef7c1c2cf3f8b13108c02442d50d001f13d14207e427302e4f469b948bb2b40aaabeb2b0d35e6c811e09147a45ceaf8f1725f6aaaac206cdfae7f7f814666263072a4e38646ddbb7b2f093d2b4b8ec9555701bd7a595780387340424280993381f7df970a438aa347a594310548f0e26a123ae0390744d324d45209907efd5a5eb8319beddb818b2e02962df3de3e011120111140d7aededd6f6352528053a7e49a448ce14e13422030044871b1dcd201f13d14207e427302a4b0506edd152080e3d53c4d0366cf9615fe458beaef1f34482e48569de47a134709e80a6f3a209999724c060d92f158f5d838734000e0f6db657577c58afafbdce901a260085660d0dc77a631717132493d75cadc31e4e5492e84bd03d2dcc28d2778f659b9ddbcd97bfb04ea13d0f55458f404ac84651eeef40d03a4d475ab56fe7d5e550b141420be8702c44f888d75fea377f76402c824393cdc713cf3fbef03fff90ff0f7bf379c008485012346587792eb2d8e1c9195a4f3cf77fc788f1eb27a6bf664c811ca89090b1301929565cd2688cdad6627260293264932bac28800a103e2ffd4d6ea4f4207cc0fc35215b0060f965bb570e3ad3c901f7f0456ae941c2f6f9f777d5d014b71ce39528a9b89e8c629281021a14afcbb8acd26e7557f1620c5c512b1e0ea3985780e0a103f4139208eaa04191120212140dfbe4d2fa4bffc023cf00070fdf5c0b5d7367d9e9557d9bd857affcd392080775c107b27e6fcf381cacafa92c956a2a5d5ec59b3802d5b24dc051001d2bebdeb2be0f6c4c45080f83be5e572ced3e38000e68761eddc29635095069b5bb8f1040b178a407fe619c983500d3dbd8155044868a884be518018a7a040c46c881b33c0960ae2589da222994fb9f3de89b9f010f809cdd5df2e2890e4f0f6eddd7b6d47a578e7cd939c82bffdcdf1735253a5d292a7123efd81cc4c991438137ede1220478fca445d0990a143a50f86d504626d2d70fc78f32b4f93274b72a04a4677b70216202b75e5e5d67482886ba889b6151c904183eac3904243813e7dbc2340f6ed03962f071e7d14183d5aeedbbad5f3fb0544fc59458000ac846516ee56cd04fc3fb4952578ad0305889fa092bf1cad3cb8d305dd9ec62525d7ad03fefd6fe0e5979d271eaac9aed526b9dea4b9fc0f40564b6d36cf0b90c64e4c78b88810338e4d5a9a4c3eaaab8dbfd6f1e32daf66b76e0dcc9821dfbfca4ae30204706fb5383d5d92f9295e1c5355254d4cd7acf1ec7ecacae4d655072426467e739e704054fe87c25ba5789f7f5e264cb366895bdda993f7cebbc78e4908a95504c88001e28058b5cf91995454c86f2c3dddfcd776b76f18e0ff02844d08ad0305889fa062359d0910774f26805c480f1d92135e793970f7ddc08409c06db7397f4e8f1eb2da18ac02e4ec59e0bbef9a1720ad5bcb67e4e94a589999221495e302981722f7de7be2749971c15193c99656b367cd92fdad5e6d4c8018a9d8b271a3acfceedfefdebe039dc387e5d82c5eecd9fde87540545cbb990e4865a5843d3912209e2ec57be89054bd9a3f5ff21f6c36e0bcf3bc77de55df7fab0890941409ab54958c0299cc4cf98d39ea8d64946076408a8ae88058050a103fa12501e2eec904a84fa8dcb70f78e209d9c7fffd5ff38e8acd16dc0d097ffc51c2e19a132080772a612927c6fe78a5a602b9b9c67220340df8ec33f9bf19171c5727932929c085174a32ba190e883b9f818a33f745af077f401507484fafef13e109f43a2080ac6e9ae980ecd923e5761b0b907efdea176e3cc50b2f001d3a00f7dc537f9f5a5cf0860b60951e208a60aa84959121b79e70d98259801417d301b10a14207e8212208e7ef8ee3621542801b27429b06489947b74e582939a2ab1c8c1d8182a3353e2c0478c687ebb1e3d3c2b406a6ae418341642eaef2d5bdc7fed5dbbea0b1c98e980b832999c354bc4cfc993be11206a82132cddaef5a20448bb76c09b6f7a6e3f4ab4ea11205dba98eb80a80a58030736bcdf7ee1c61314168a089f370f68dbb6fefed4545924f2a4f0531c38209fbd3b45203c419f3ee272054322ba1220662f825456caf9dcdd3943731539fd01866059070a103fa14d1bb1e01b3b209a66dc0189899155e9975f167bff81075c7b5e6aaa348ddbb3c7fd7dfb2b99993221898a6a7e3b4f3b207bf648d85c6301d2bbb71c57230e555a5a7d83456f3a200070e38df5932ea30244efd8cf9e15f708a00071465e9e84fd4d9b2602c4530df9cacae47bd0aa95ebcf31bb19e1ce9db290d0a143c3fb3d5d8af7a597a4b7cffdf737bcffbcf3e4d61beeb39512d001096bedd327f00548559574bdefda55be5f66ba5d46aa6602725d292b93f3a4bf515b2b7328866059030a103fc25133c2f27249123422406c36b9988685c98a9ba3aede8e1839529e1b8c61589999cefb7fd8a30488a7c2253233e5188c1ad5f07e3362c5d3d280f1e3e5ff663a20ae546b6bdb16983a55feefae00090b93157abd0ec84f3f49d2bdbaf893a6a8d0b83bef947e382a54cf6cf4744157c4c599ef80340ebf02e47cdcb1a367be23c78e01afbe2a8b418d854f6cac2c3004a3000182a31256569684f6dd71872cf29929a8cd102080774b419b45498988103a20d68002c48f70547fdbe8c94431772ef0cf7f360d33688ef6eda52a49b009901327e402d852fe072002e4d429cf9dac33338173cf958976638cc48a9f3e0d7cf51570e59532c932cb01e9d0c17581fbd863927cab4aabba833bbd40d4e4e6ea41931b800000200049444154ab29409ca104c8c8913239576593cd464f177485271c104702442ddc78e23bb278b1bcfe9c398e1ff756fe9d150588aa8415c8646488bb7ed34df2b799df31b304883f8661a9e2057440ac0105881fe1c801314b804c9d0adc7ebbfee7a5a602df7e6b6cdffec6d6ad32a9775580009e0bc3faf65be7e3484d95c9b73b31ea1919122b3c71a27949877a2793bd7b038b16b95f5e1a70af6b6f76b68c73cc18e9b172e284fbfb0f549400b1d9245f67f56acf542672d701f9e517734a4797968ac3a33aa037c61302a4ac4cfa2fdd7baff34ed5a9a9b24a5e5969eebeeda9a991247bab09909414b9ee1d3feeeb91788e8c0ce0a28ba4d081cd66be008988703fafc79f05885a98a003620d2840fc88e604487cbcf7c703c88570e74e59e50f163233c5fde9dfbfe56d7bf4905b4f089093272551dc990031122b9e96264d16fbf7372fe9d09dc9a451a2a3f53b20d9d9b2cadaaf9ffc4d17a421b5b5f27d56a171b7dc2293a47fffdbfc7d9596bae78000e608a25dbbe4d6910302c877c4ec24e1254b44583cf490f36d5253254fe0fbefcdddb73df9f922e2ac284080c075416a6a804d9b64012422427e67660b10237dc3fc5980d001b11614207e84a38960418184b5b4940ced2952536542b26d9b6ff6ef0b323325e722c4855f4f972e9240eb0901b26d9b7cf6ce044874b4acd0ba2b40264e948b94af1c10337067ecbb77cb24a76f5ff99b02a421858532315502242606f8ed6f250ccbec5ca7b232f71c10c09c30ac9d3b25974889d1c62427cbf7cbacc9d8c993c02baf0077dde5bc092c000c192209d99e0cc3b25a095e45fffe725e0a5401b273a7b83b63c6c8df66f79b315ab4c6dde21e56a0a848aec756a9ea16ec5080f811ce1c10234d088d72eeb952a12b58f24034ade50ee8f68486caf1f18400c9cc14e179eeb9ceb771a721e1e1c372719f3851fe76947be40efee080d4d64a65b1941411f65dba5080344695e0b52f0e306b960837b3c3318d38206624a2efdc2913deb030c78fab4a58aa6a9a51fef10f292cf2f0c3cd6f171e0e0c1be61d019294e4b97db8439b36f2dd0b5401929121c7571516313bcccfe89c212c4c2200fc558074ee6c2cac97980705881fa10488fd2aa3d1d50ca3b46a2527ca601120870ec9c4c655010278ae146f66a624013797d49d9a0aecd8019c39e3faeba6a589bb73d965f2b73f3b207a05c8e1c392803f6080fceda924637fc69100b9ec32f9dbec64745f3b203ffce03cfc0a9092b08039df918a0ae0c51781db6eab0fdd6c0e771617f470e080b83091919edb87bb047225ac8c0c39b61111f277bf7e92c76756a96b33e60c662d4a791b3621b41614207e444c8cc4fd9e3c597f9fd1268466e0e90ba19550ef53af003974c8336369691ca9a9122eb36387ebaffbd967923fa2267e6609105f38207ac7ae26352ace9c02a42979792224edcb29878448c9d0152b1a9e9f8ce2ce77263252aac2197540344d72409a13206ddbca6ab219df91d75f9709d2638fb9b67d6aaa4c4c3db5126dc50a588a40ad84a569224054f81520e7a0eaea7ae16f14b30488bf3a201420d68102c48f501551ec571e7ced800072213c72a43e213e90c9cc9490043da5613de180e4e7cbbf967a910c1e2c76beab02b1a606f8e28bfaf02ba0be94add1f87e5f3920a74eb95e2d283b5b423cd40ab412209eeae3e28fa80a588db9e30ef9acdf7fdf9cfd9c3923ffdcf9cec4c51977400e1d920a68cd0910c01c915a5505fce52fc0f4e952fdcd15d4e2c3962dc6f6ed8c0307805ebd3cf3da46494991f15554f87a24e6b277af88d0c602043047e49e3c29dfe9601520c5c54c40b71214207e44630162461774335017c26070419a2b7beb8c1e3d44a0d5d69a370e579d98d6ad81e1c35d8fcddfba55569d1b0b909a1ae3652f7de580a87dbb4276b6c4fcab0203fdfa494cbe998dedfc1d6702a4470f60c204f3c2b054e34a77be335dba183f663b77caad3704c85b6fc982c2ef7feffa737af5926b82a7cebb5676405252e4fa677605325f93912121b5175c507f5ff7eeb28864860031ab6cbfbf0a103a20d682024407b7df7e3b4242429cfe2b2c2cacdb363b3b1b93264d42bb76ed10131383193366e098c1a0492540d40fbfa44456ce7c2d401212e45fa0f703a9ae96dafb7a0548f7eef25c339ba37dfbad94c975e5d8eb09914b4b931567fbceea66945daca81017c2170e08e0fad855052c855a7d0cb4898e119c09104092d1bff9c69cf0182540dcf9ce98d18c70e74e2944a07af938a35f3f991cbabbc070f62cb0702130654a7dee912bd86c122ae9090172e68c4c56ad2c4080c00bc3cac800468c90d03e4568a8e41a518018870e88b5a000d1c13df7dc83b7df7ebbc1bfb7de7a0b6ddab4c1b9e79e8bf85f9b711c39720463c68cc1fefdfbb170e142cc9f3f1f6bd7aec5840913506da03b969a082a1d63d6c9c40cbc9107f2c51712fea427a1ba2566cf968bfe7befb53c81f8e107d9b73b020430370c4b4f25aed45459cd74a52f425a1a70e9a5525c4061860031b29a6d0425405c4944d73499d0d80b905ebdc40d31e3e27fdf7dce3b5bfb0b9ad6bc00b9e61af9be98e18228d7ca9def4c5c9c390ec8c0812d57cc494e16819d9fefde7e56ad02f6ef079e7842ff73d579d7ec10c1bc3c794dab0a904e9d24413e900488a6011b37360cbf5298558af7c811b9353a6730ab379437a9a99131d301b10e14203a38fffcf3317dfaf406ff92929270faf469dc7cf3cd75db3df7dc73a8a8a8c0faf5eb71fffdf7e3f7bfff3dde7fff7d7cfffdf758ba74a9dbfb8f8c94b2ab561520df7d675ea50e477cf6995c18b76f37ef3557ad92c9e9b469c0d0a1f2b7b38b7966a64ccc870dd3b70f2540cc4a443f7b563e6b3d02046859209696ca36f6e157803902444d267dd10704704d801415c938ed57a1c3c345f49a2140d6ae95e3e6cf9494489e873301121e0edc7aab8414555519db975107c40c01e2ac03ba3d4663f4d7ac9130afa143f53ff7fcf3e53b6b56196085557b80d8136895b0f2f24420381320669c837ef8414225ed1d1677500e883fe5c6a9f1d201b10e14200679f7dd7761b3d9307dfaf4bafb56ae5c89c99327233131b1eebe4b2fbd14c9c9c978df6086a67df93b5f7741b727355526263ffee8b97d28e16196d3a212e75f7d55c246e2e2a4a1da79e78913d0f8e49a99290dc0f496a58c8991928a6639203ffe28a5625d15204949f2de5afadcd6af1717c81302c4570e88da9f2b636f5c014b61c6c5bfa44426186686e1f9024725781b336b96b86d6bd618db975107a4a8c8fd09525595f4836929ff0390df57ab56ee7d47344d16562ebf5cff7301395701e6bbcf070e48e88fdd25cc72045a25ac8c0c71db2ebeb8e963fdfac90296d1a4fbac2cc909344a4c8c84159b59f1ced3a8732f1d10eb40016280eaea6abcfffefbb8e8a28bd0e3d7b239f9f9f9282e2ec6c891239b6c3f6ad4286c37b87c6fdf8cb0a040d47cebd6865ed214468e9450154f8561699a9c3c01f3f6619fc87dc10512e2b57ebd7c9e9326c94ad4c68d0db7d71b7e05c845c5cc4a58999932391831c2f5fdbb122297962609d88d7b10b4692302ca0c07c4db02a4552b2917eb8a03929d2ddb37ae42648600513f7b7f4f667745800c1c2813e3d75e33b6afb232391e6ddae87f6e972ee214ba5a7ca0317bf7caf35d1120616112aae7ce7764d72e398f3716fdaed2b1a34c4e3d21407af468188a69355252c4f93110d56c293232e4fbe6e81ca95cb67dfbdc7f7d4d93f3905e07df11662c4a791b0a10eb41016280b4b4349494943408bf5289e8f10e6c89f8f87894949418ca03692c40ac107e054868d8a0419e1320870fcb243239d95c01d238917bdc3860d326e0bfff1597e1924ba4b24f5a9a4c4adc1120805ccccd14200307ca67ee2aa9a952aed3599e8ba6c97b743611329a7468249cc628ae8e3d3b5bbe5f8dbb5e2727033ffd241352775102a4bcdcbf4b87e6e58903d85218c3ac59f27d5231e7eea0aaa6b9d3b5d868334255016be040d7b67757a4a6a5c9e7397ab4fee72a3c917f67e50a588a9414111f3ffde4eb919843e3fe1ff698518af7d021b9869ae58000fe2540540e2443b0ac03058801de7df75db46edd1a37de7863dd7d15bfce2ec2c3c39b6c1ff16b6bd38a66662073e7cec5d5575fdde0dff2e5cbeb1eb74ffeb24213427b3c9988aedc8f7bee918ba319a12c99998efb68d86cc0155748bcfeca954061a1382240cb7d379c61b603a2771ca9a95246d75922e3debd7281f29400292d95fc005f745576b51b7ae30a588a7efd64a273f0a0fb63c8caaaef58efcf6158797922a65b120553a78a6b6620e5cd50df18d5a7c75dc7e9871fe437ebeafe55252cbda4a50163c7d677bd7687d454e0fbefcd2dcee10f0244e56a0542185661a1b839ce04486cac7c178d0810b50812ac02a4a848ae41eddae97bdef2e5cb9bccc9e6ce9deb9941061914206e72f2e449ac5ab50a13274e44273bcf34f2d71956a583ce67677ebd424436330b5bbc783156af5edde0dfb469d3ea1eb7aa0302c885f0c71f6595d76cb2b26455f3da6be56fa342c795446e9b0db8ee3ab9b8bff30ef0f0c340dfbeeeedcf2c0172e2844c94f53a31a346c9fb71f6b9a5a549e8d9d8b18e1f375af5c4174d0815aa91624b34ae80a53063f571fbf6fadafefe1c86d55c052c7bdab7076ebc1178e30df7cbd31ae91b638603e24af89522395926ed7a12ef4f9f06befacafdf02b456aaa0864338b73f88300e9d245ce29812040befa4a6e9d3961369bf15050750d352367d41f05882ac1abd7519d366d5a9339d9e2c58b3d33c8208302c44d3ef9e4135454543408bf02ea43afec7b82280a0b0b11131383b0c6311e3ab0ba00d134696667362a76f59c73e4c2635480ecdae57a227768a874287ee105f7c2410011200505c6e395b76e95cf58af00e9d041f23b9a1320a3473b8fb737c301f176fe87223abae5b19795c92aa4a33e0c8989b242edeec5ffe4497198aeb842fef67707c41501024818d68103c0860deeedabb4d47dd1dab1a384d2b92bf6dc11203535524ed7553232a4378e51013278b07c3fcd729f4f9c10c16e750162b3054e25ac8c0cf90e75edea7c1ba3a5785502babbd7307ba2a264c1ca9f04089b105a0f0a103779e79d77d0ae5d3b5c7df5d50dee4f484840e7ce9db1d5c12c7ccb962d18ea4ead453b9400a9a9018e1eb59600e9df5fec4d4f8461d99f3ccd08f5d29bc86d94eeddeb3bd71b2133535697fbf7d7ff5c679f5b65a54c129b9b08d9575f73075f3a20ae8460a95554470e484888385fee0a90efbf9763af2a1d0583030200175d24a149ee26a39795b92f5a6db6fa4a58eeecf7f061fd0204d0f71d494b93f3823bbf657bc2c2e4dc685623587f28c1ab08944a58cde57f28dc0df3539895800ec8efcbe835c1dbb009a1f5a0007183e2e2627cf1c517b8f6da6bebf23aec9932650ad6ac598323761998e9e9e9c8cdcdc50d37dc6068df3131123eb46f9f88102b0990d05009f5315b80fcfcb34cdc55ec6a4b09d5ae909929130c772aecb88359cd083333e5330e71e3979b9a2ab1eda74f37bc7fd326498c6e4980f8ab03e24a085676b65c54fbf573fcb891f087eddb65923878b08cc55f1d9053a7e43be0aa00b1d9809933818f3e72af1a9511070470bf17c8ae5d72ab4780c4c7cbaab05e0172f9e5e6ac489b997fe74f02242545ca251bb916f89a921271dc5a1220c9c9f2fb73e73cdcf81a6a06fed60d9d0e88f5a0007183152b56a0a6a6a649f895e2f1c71f479b366d306edc382c59b2040b172ec40d37dc80c18307e38e3bee30b4efd858b9fde107b9b59200013cd39957c536abd59bd4540913306247bb5b52d75dcc10209a666cdca9a9225a5542bf222d4d2650cd4db8cca882e54b07a4a5b167674b3f0767e95946044856967cb6ad5b9bd320cf57b85282b7313366c882c93befe8df9f11070490cfda1db1b773a7949fd5e34ce88dd13f7c58be7346c3af14a9a95224c10c717be080fc0e5422bf954949910515b30a7cf8824d9be4b6a54a68ca6573a7e964e36ba819508010a35080b8c1bbefbe8b2e5dbae0b2cb2e73f878626222366edc88debd7be3b1c71ec38b2fbe88c99327e3f3cf3f3794ff01d40b105526d28a02e4e851732f08595992c3d0ab97fcdd5242754b9c3821177f6f0a90f6ede53d18f95c0e1d92c9abbbe31e344826168d3f375756626362e442ef6ea51d5fe780b434f6ddbb1de77f28faf5936377ea94fefd6fdf5ebff2e86e58901570478074ed2a93ec8f3fd6bf3fa3df99b838f7c4dece9d223ef4f657d22340d2d2c4c5747209d18daa8a67860b72e0808871339c194fa37eb3fe9c079291210b542dfdaefaf4915b7716421a5f43cdc0df040843b0ac0705881b7cf3cd37282c2c84ad9933f4800103b06edd3a9c3c7912bffcf20bde7aeb2d7436e1db6fef808484586f954a4d8ecd0cc3dabe1d183ab4fe82d8bebdac7cb9bb0f7713b98dd2bdbb880877b16f9ce80ead5a49c348fbcfadb050be4b2dadc41aad7a62349cc6086aeccd856139ab80a570b7115865a584f4a895477f77404243f52f7a5c70814c80f4b8a2b5b55236da1721587a13d0157a62f4d3d2a459a359a2bc470f738a7300fe51014bd1a38784d1fa731e88caff6849f0b56d0b2424b82f40860d3357541aad8ce84daaabe51a4407c45a5080f8196a32f5c30fb2baa87a0b5885ae5d6525c74c01a212d0ed3112f36c2491db08464bf16666cacaa411d1999ada3059f5b3cfe4a2346142f3cf332a408c86d318213a5a6e9d0990d3a7257cc51501a2f7e2bf6b978420058a039298a8bf3bf6b06172fcf5f451397142048b510744ef67ad69ee0b90e46411f4274e34bfddd9b3c0175f98177e0598579c03100162e64ab927090911e1e7af02a4bc5cae6f2de57f28dc0d053533015de14f0e884a96a703622d2840fc0cd548e7c001eb855f29cc4c882c2b93d2968e0488a3846a57c8cc94d5477712b98d60860031eadaa4a6ca185495e8cf3e934a60ca59738611015253637c35db082d39207bf7cac4b3b910ac981811327a2ffedbb7cbf76cf060f9dbdf1d103de1570af5dbd5d3a7a2ac4c6e8d3a20274fea3b471c3922df55770508d0728cfe77dfc9fb33538000e614e7d034ff724000f9ddfa6b08d6e6cd727ed42340f4e63e3abb861ac59f04885a88a003622d2840fc1035a1b2b200f9ee3be33d2f0060c70eb96dbc7aa312aab76dd3f77a4613b98d6044805457cb7b35438000f219d4d68a0051e5619bc38800512bc2be76409c8dbdb912bcf6b8b3fa9895254e9baab6161727ab7167cfea7b1d2be0ae00898f1731d0b8f84173a8aa59461d10409f0ba28a7bb823405493d296be23696922ac468dd2bf8fe630a33847519108367f12202929f21b36b3f089b7c8c890557967d5f71ad3af9f085c3d22d3d935d4283131e2e0e869bee92b8a8be5960e88b5a000f143d46ab59505c89933f589f246c8ca92c4e9c627e881036552a7d769319ac86d841e3d64f25951a1ffb93ffc209fa9d1712726ca8430335356a48f1d736d25b6634759c9774780a8c9a4af1c10b55f670e4876b67c261d3a34ff3aee0810fb04744026e29ae63f2b87f6b82b4000f90c7ce18000fa1ca79d3b253cb3470ffdfbebd851448f2b02e4b2cbf487b2b584d1e21c807f95e055a4a4c839c61f431b5dcdff502427cbf5233fdff57d38bb861ac595dc3aaba0ce017440ac0505881f627501327cb85c5ccd08c3dabe5dc2571a5fac1d2554bb82ca7ff09503024898875e3233e53d1b5dc5b28f154f4b9370be0b2e68f9792121b21aedcec4594d267de580b46a2593436717ca962a6029faf5ab0fd772859a1a6942687fccd405d0dfc2b0aaaaa48f801101e20f0ec8ce9db2b8e16eb26e4b22b5b4547e7baeb88e7a51c5398c3424f44701e2af95b0ce9c91ef82abe157807bb9685959c09021e60b5ea37981dee4a79fe47c1015e5eb91107b2840fc10ab0b90c848110d6608104709e80a77724d5422b72f5642940071a7125666a65c449cf5a9d0436aaa5402fbf45360fc786992e70aeec6fc9a3199344a73bd405aaa80a5484e96f7e2ea67b077afac5636764000ff5bad3d72448497bb0264d83029cfad728f5a4289d6965ca9e650e1167a1d1077c2af142d55c24a4f97f019b3f33f1446f3ef0e1c90dfa991cfdddbf4ee2d936b7f4b44dfb24584bd1e01929424ef558f00f144023ae05f0264efde7af146ac0305881f627501029893887efab474b96d4e80d82754bb82aff23f00097f02dccb033173dca9a9929cbb6993be8990bb6517cd08a7314a74b46307a4ba5a62aa5d152080eb177fb5e23f7468fd7dfeea80b8d303c41ebd89e8a5a5e2ce1959b56dd54a5fe7f9ea6a39df181120ca0171e692a5a5494e903b215eae909a2a22ca9de21c80ff25a003b280d2b7afff09908c0c117a7abe6f616152a1ccd573504bd75023f89300c9c9a100b12214207e88bf08903d7bea279feef0c30fb25ae86cf5466fcf91ea6a9914fa4a804444c8aaac5e01525a2a2b38668d7be4c8fa10133d02c4880362b3f97655d5d9d8f7ed9384705742b0f43602cbca92c982bdf08a8a927ffee6802801e2eec43929493e0757c3b0cacafe7f7b771e1f5579ee01fc3703210909eb6411080844130942836c06051144c146c484e5436bf1bad05e1704ac5bd54b5b45d40bb6b8f416515cda8bf40211172cc82288562168524a4920618b068210482060424272ee1f8f27ebcce49c3333e79c197edfcf279f819993e1256732739ef7799fe7f54fc0aaa7ebd8be7df21ee16b0072e68cfbf3ab281280042afb01186fcea10ac6000408ce4e58dbb601d75eabbf95be9e4e58ad7d86faa24b17795fb77b00a228f29eedef1a18f29d9f57059219d499871e3dac1d8737eacebcd9d9c6d73be7e4c82ce69557ba7f3c214182b01d3b8049935a7f3eb5905b1d9b158c74c2cace965b7f8dbb4307f9995656eaebf7ef724950a95779b9ac4f37bbed71635dbbbacf9469ed800548d3839e3db50720cd0bd055c1d88ab7a848c61d1161ecfb1d0eb908d29301f1c792bdf878e9c877ea544337344fd4a619be0620805c2036dfaf67df3ef9dd0f6400d2b839c7c891fabfffd0212023c3ffe30ab47efd8065cbac1e85763535c0975f02f3e6e9ffdee464e0fdf7b51ddbda67a82fdab4914902758f8dd6e4e7cbfff7fcf9d68f0d0b035e78a161d2c717c78fcba4003320f6c30c48109a300178fcf18640c48e2ebf5c36255cb7cef873e4e602fdfbcbde279e34df58cf9b1d3be48d2d10b3415af5eaa53f0059b54a96bea86d3efde1c92781679ed1f73dbe6440acacff0064ecee9660e5e7cbd8b4d60469ed84a5289ed75e07e36684be74c052e92944f75706e49e7ba40d699f3ec0d34f7bdf2470f76e99d4f0e5b59a9828c196bbd7c8279fc87bd975d7197ffed6186dce0148e6e4db6f833303d2af9f4c30f8927137536e2e70ee9cbefa0f555292048a5adadfe6e64af0e1ed33d4175a3f132e5c007efe73edafcbb56b810f3ef06d6c2af577910188fd300312842ebd1478ee39ab47e19dd309dc761bf0de7bc01ffe60acab8cb70274d5f0e1c0fcf9f2e1d95a2a5b2de4363a8beb0f3d7b4a21aa561515c0dffe063cf288f1ce3cee4c9ba6ff7b8c0620feba98f485a72274b50396d69f6d72b22c9d68cda143b2a15d2865407c0d40060d025e7c515b36c25f41ebcf7e068c1d2bb3a90b16002fbd043cf61870fffd2d3be2f85a800ec8855eefde9e039091231bf6840994e1c3e53d43afe262b9500cc600445d42999fafadab9fd5b66d93d78191da8ca424595675f0a0d41379939313d80937ad9f092fbe281d0177ec9000b9358307fbafa6a7a040dedf1313fdf37ce43fcc8050c06466ca8c9a91f5c8d5d5c0bfffad2d00397b56dbfa5f2b0bd0557a9760ad5c29858477de19b83169e572c985616dadbeefb34306c45311bad60e58aaa4246d1b81a933fdcc8034507f97d58dd1bc292bf35fd01a1f2f9320070e48e0fde4937231f2ca2b4d9783f8230001dc67c9aaaa80ad5b03d37eb73923cd3980e06cc1ab4a4e968bcc602944dfb64d02a576edf47fafd66618d5d5f29a0e4401ba4a4b00525000fcee77c0430f690b3e00ffd6f4ecdb27930281ca0291710c402860aebb4e2efcb2b2f47f6f5e9ebc81b6367b336488645b5a4bedfabb90dba89e3d25ab71fab4b6e3972d03c68d0b5cd71c3d5c2e595aa47799831d32202e97d4bc34de04b2ae4e6a5af40620e7cfb71e44e6e4487d52f33a0020f832207575f2fff53500494a92595f2dcbb0cacbfd1fb4f6e801fccfffc805d18409c09c39b2acf1f5d7e522aaa8c83f0188bb56bc5f7c21afbd40d67fa8f436e750a90148efde7e1d8e29222365dcc11080d4d5019f7f6e6cf915209ba64645b51e80e4e549ad49203320ad7546acab0366ce94dfbddfff5efbf3fa73777b76c0b22f062014306ddb02b7de2a0188de37929c1c99d1fac94fbc1f171d2d6b5c5bfbb0ddb9536eed108000dab220f9f9c0575fc93a763b30da76d12e1910a06916a4a8482e0ab574c052699d7df454800e346440fcf1e16a8663c76432c0d700a44d1bf97dd652881ec8d74c9f3ec05b6fc905da35d700bffc65c352167f6540f6ef6f9a29fce413b970f4c7f3b7466dcea17743c24387648c562e51f545b074c2faf7bf25c0361a80381cda6ad1b47e86faa2b50cc8ebaf4bb667e9527d4b0ffbf5939f913f266ad801cbbe188050406566ca92953d7bf47d5f6eaebcc94647b77eac963d47b66f970b1a7f16721ba1270059b64cdee0274e0cec98b4f22500b13a03e22e00d1d3014b75e9a5d2c8c0db87bfa2785f7b1d1f2f59146f05d176e2eb1e208d692d4437236b969c0cac58216bd3afbd5666d05b5b53af455292cc3cab3f374002901b6ff46f1d9737a34649a7243dcb2583b505af4a9d35b7bbeddb256befcb64989656bcb9b9f21ad7f2196a94b700a4b81878f45199401b3346dff3fa6b77fbda5a990c6006c49e18805040dd7083b460d5bb0c4b4b01ba6af8700970ce9ef57ccc8e1dc0b061e65d0078d2bdbb7cf8b416805457037ff90bf08b5fd867edaad1002410cb69f452c7de3c00515beb6ad5b6add40f780b404a4a24c3e12d030204cf322c7f06208306c98593b7dfd5aa2af932eb35337020b0668d5c80fbe377ad712b5e405e0fbb779bb3fc4a3577aefcfbefbda7fd7b422100397cd8f8268c66c9cb93f6b29191c69fc3dd32bfe6025d800e3474176c9ecd5514e0befb64a9d8c285fa9f373151267a7c0d288b8a64328001883d3100a1800a0f07d2d3f50520b5b5322ba92700a9ab937effee288a042056eeffa16adb5682906fbff57edcdab5c08913c0dd779b332e2d8c04208a62af0c48e3b1e7e5c9458bdefd499293bdcf3e7a2b40071a7b86ac650000200049444154ea4282a510bda8483691f4c74692575d25af897ffdcbf3316a8d91d5af19a37af694f73df50271c30699f81837cebc310c1b261997f9f3b52ff50bf600242545feaf5a37e9b38adec617ee2425c9d2484f59d4da5a69f610c80274403e136a6b5bd634ae5c097cf411f0a73f19fb3d6edbd63fbbdbb305afbd3100a180cbc89019c0c2426dc717164a8f74adb337fdfa499ad9d332ac8307e5c2d3eafa0f95964e586fbc21171181d840caa8f07099d1d2138054554936c7ea0c48e7ce7211d83c0362e442a0b5f5d7b9b912f0786a1c108c19107f643f00d9d7272cccfb32acb232b9b5fa356394d329174fea6be4934fa4ad684c8cb9e378ea2909f4d6ae6dfdd8ca4ae0e8517d1b93da8dfabb6cf76558fe0a4000cf9fa9858592093223030234fd4c38791298350b983c595af11be58f9a9e7dfbe4734b4f969bccc30084026efc7849376b5d0ed0da0c72736dda0043877a2eba54039361c3b43d5fa0b516801417cb458b5d8acf1bd3bb17887a3169f56cb6ba6baf3a7645f12d00397cd8f38ebeeaf2414fcbfdba749119be60ca80f82b0069d74e826a6f85e8c19e01011a96c8d4d5011b379ad37eb7b99123a516444b16445d6617cc19904e9da488dece01484585bcf7eb697ce18e5acbe8692244ef67a851ee0290b973653f99575ef1edb9fd51d35350203f2bbd596e32074f0b055c5494b4bdd4ba0c2b37572e785adbacac31b510dddd07ed8e1db2e6d62e3bc7b71680bcfdb674a231b25960a0e90d40d48b493bcc6637de0be4d831199b910b81a424799d1d38e0fef1d6d65e3b9d9205b918332040eb85e8c19e01011ab26439394069a9b9f51f8d3df514909d0d6cdae4fdb860de03a4b1941459be6b577bf7caadaf1990ce9de53dc4530062e433d488e601c8faf5c05fff2afbee5c72896fcfddaf9fbc4fabef0746b005afbd310021536464482bdcd66a1f007d05e8aae1c3a5d8b3b8b8e56376d880b0b19e3d659cee82a5ba3ae0cd3781a953a578df6e5aebfbde9c5d32204043c12460ac0396ca5b2bde9327e535dedaeb375836235414ff0720830649d3084f19a450c8802425c9ebe0fdf7810e1dacdb9dfb861b243b3c7fbef7e30e1d92ac5c428239e30a941b6f9460cbae85e8eafb8ebfbaad79cb8004bafe03681a80545400bffa95d43add7187efcfdd78777ba3d882d7de18809029d2d365edf79a35de8f5314ef7b2878e269f3adf3e7e5f9ec1480f4ea25b511a5a52d1fdbba552e06ec547cde58b06740d4b1e7e7cbeb313151fff3c4c7cb45a5bb0f7f7569516b4b1f826533c2b232e958e5ef0c484d8de7d6dc6565726ef4ec1b60376a90fafaebd282342ccc9a71381c9205d9b64dbe3c397448de97dab4316f6c81909121f52cebd75b3d12f7f2f2e4e7ec8fd6b89e9a61a86dc0cd08402223e5abb41478f249b97ded35ff749b4c4af26d77fbca4a99046006c4be188090293a75929991d696611515c90588deb5abddba4966a17900b26b971441db2900510be2dc6583de78433e58aeb9c6dc3169e572b90f9c3cb1d3729ac64bb0f2f2e483a96d5bfdcfe37078fef0cfcd958b8bd6f69b09960c883f5bf0aa060e9465689e9661a97b8058dd32db17ea45cff1e3d62dbf52a5a7cbcffcd9673d1f13ec1db054975d26ff57bd6ddfcde28f0274959a01699e492f2a92dfa140d77fa85c2ee0e38f81575f95d798bf5e479191f25c460390fdfbe59601887d310021d36464005f7ce17de657bd2831327b73f5d52d03901d3ba4f03590bbc1eae56933c2b23229d4bfeb2efb5e7c19c9808487db6377e5e64bb07cb910f0b4fc212707484d6dbde831583220810840a2a22480f354881ec85dd0cde27235fc1fac0e409c4e999ddeb041ea41dc0995000490cf99b56b3d2ff1b392bf03908a8a96ef23be7c861ae172c9b2b761c3a4fb953ff9d2098b2d78ed8f010899e6d65be5c3f0fdf73d1f939b2b1767ddbae97ffee1c3816fbe910e1caa1d3b6426c82e9bf901406cac0445cd0390e5cba5a7fa8c19d68c4b0b3500d1bab7809d2e269b2fc10a5400a265e63198322011110dad83fdc55b21ba19bba0079ac321af91cb2eb3476bdbcc4c09fa3c6541422900c9cc94fd31366fb67a244d555549e30a5f3b60a93cd5a2f9f2196a444c8c2c317ce30dff2fe1f3a513d6be7df2d96397e633d4120310324d4c0c70dd75ded3e3beac5d1d3e5c8a0ffffdef86fbb66fb7c706848d399d52ecd93c0059b64c964bf8da3d24905c2e9959d45ae469a78b493503525626dd557c0d408e1f6fa871016436b2b050dbeb373e5e36efaaaa323e06331415c99a757f67e4aeba4a9647d6d6b67ccc4e41ab2f1e7aa8f5e26fb3b469033cf104f0e1872dbb449d3e2d3ff3500940faf797df4fbb2dc32a2c942623feca802426caef65f300c4acfa0fd5cc9952eb14883dabfaf593f7a073e7f47fafda01cbaeab09880108992c2303d8b2a5e986708d192940575d75957cd0aafb819496ca8c939dea3f54cd5bf1e6e4c8ceb5762d3e57e9dd0ddd4e17935dbbca05bf3af3eecb4ca4bb8dc076ed92cc90d60c0860ff2c88bf3b60a9060d9222517775346565f6095a7d3175aabd5a694f9f2e41c682054def0f9516bc2a87433e673ef8a06936dc6abe74de73273c1ce8dddbfa0064da34ff74bd72c797ddedd901cbfe188090a96ebb4d3e143efaa8e5632525f265b478ae7d7b294054eb40d4f5ce760c407af56a5a84be6c99a4ccc78fb76e4c5a180940ec7231a9f6c4ffe28b86253246b9db082c375796d669096ce2e3e5f6620e4000f7cbb0cacbed13b48692b030e0f1c78155ab1af6a300422f00016419d6c993de3b7f992d2f4f261efcb924a8f952d09212c9ee9a55801e686abb6223cbb0b80788fd3100215375ef0e8c18e13e3dae16a5fa327ba36e4808c86d4c8c3d3f581b67402a2ba5fee33ffec358572633e90d40ec7431a98efd8b2fe435111969fcb93a769480b1f1cc5c4e8e04c05a5aaeaa1910bb17a2072a00e9dc59ce81bb42743b65cd42cd1d77c87bf073cf35dc77e8904cdef8bbcec74a8307cb248f9d9661f9b3005dd5bc1b9f3f3e43eda4532779bdea0d404e9e942f0620f6c600844c9791211d592a2a9ade9f9b2b1726bd7b1b7feee1c36576eff4e9860d08edb806b4674fe0e85159039f9525e3bdeb2eab47d5ba50c8806cdfee9f42d0e6b38fb9b9da671e6363e5d6ce199073e7641963200210c07321ba9dea86424d7838f0e8a332e171f0a0dc77e890bce7daf17dd2287519d69a355277610781084092926499b1bad4cc1f9fa17663a41396ba34960188bd310021d365644821f3dfffdef47eb583902f1f84c387cb9ad1ec6cf9b2e3f22b400290da5a49992f5b068c1e2d1d73ecae6347c9d2046306440d40ce9ef5cf8540e300a4aa4a36d6d33af3d8ae9dfc5cec9c01519708063200c9cd6dda51adae4e8271bbbc6642d13df7c844c20b2fc8df43a90356639999f2feaad6045ae9c205c954f8ab03962a294936f554db65fbe333d46e8c74c252b342c1f0997a31630042a6ebd3472e3ede7bafe9fdbe14a0ab9293256dbb7cb9ccbedb39000164e7f3ad5bed5f7cae72389ab6b36d8d9d32208d37b7f36700a228d279edc2057d6bafe3e3ed9d0109c41e208d0d1a24c1865a830048fb5445b1cf6b2614b56f0ffcfad7c05b6f01c5c5a11b808c18211d05edb00cebd021d91037101910a06122c4ec027433f4eb279b0a56576bff9e8202e934191515b87191ef18809025323365f7d4ca4af97b5999bc49fb5a3ce774ca86482b56c8df870df3edf902450d40e6cf97802933d3daf1e8a17533c2da5ab9a0b4cb6cb6d3d930167f2dc13a774e66597373a503dbc081dabfdfee9b111615c9ffa9478fc03cbf7aa1d47819565999dcdae53513aaeebd17888e06fefbbf433700713a81499364a24bebbe4581e2ef0e58aa9e3d65595d4181fcee1c3e1c3a05e8aa941499dc517736d78205e8c1810108592223432ede366c90bffbb3786ef870992db9e20afbcea476ee2c1700fbf6013ffb996f05d1668b89d116809c3e2db7763a076a0d8bda5dc5178d671f7372e4e242cf79b4fb66844545127c04aa3182ba595ae34274755f153bbd664251870ec09c39c09fff2c934076d82c31103233e5a2dc5db30333e5e5c9f2d5eeddfdfbbc4ea774e42b2808bd0274951ab4e95986c516bcc181010859e28a2b6466435d86959b2b4b03fc316ba12ebbb2ebf22b409602a9599060597ea5d29a01512f26ed349bddb5ab5c0474eae4fb73f5ed2b1902f5c35fefcc6330644002b5fc4ad5bc109d1910f3cc9ad5103087620604908d6fbb76b57e19965a801e88da0cb513963f3f43ed243656cea1d600a4ae4e8ad043ede7108a1880906532336567deea6ab908f9c94fe482ce576ae7abb434df9f2b90faf4015253836fc6cae592ee48ad512f26ed349b7dc925c08001fe79ae76ede41ceed9239b10ea3d8fc19001312b005197c83003629e2e5d80071e9059f4500d40c2c28089135bd61b9a2d2fcfffcbaf546a2d9a3f3f43edc4e1d0d709ebc811c9ea3100b13f062064998c0cb9e0d8b2c53f05e8aad858e01fff907d35ecec4f7f923691c1d6b1249833202fbd042c5deabfe74b4a924d35abaa8c65404e9c905a193b32230019344882b09212f9bb1ab4fa234345adfbed6f81cf3f97e541a12a33535ab3eb6de5ea2f8a22ffbebf3b60a99292644fa97ffc23f826b3b4d2d3094bed80c500c4fe188090657ef21359c6f2d7bfca1bb43f8be7d2d2a438cfce7af70ece7eed5a03103b66402ebd543628f397a4a4862e4ea9a9fabe372e4e960b68ed2866a69a1ad9a7c68c0c08d0b00cabbc5cea13ecbe2167a8080f976e51a1ec861be43565d532ace262ffb5fe7647bdd02e2a0abd027455bf7e728da065b2a6a040de3f82f1b3f562c300842ce370c8ecd48a15324b14aab337a1c6e592027375f32b4fcacbe51c87f26cb6fae17fd965faff9ff1f1726bc76558c5c5121c053a00e9d54bd677ab05b4dc059dfc2d2202f8e94fad5b86a5665e021d8000a1fb199a92225966b535b8370505406222273182010310037272723071e244b85c2e44454561c0800178e595579a1c939f9f8ff1e3c7a343870e70b95c983163064ab52c9cbfc86464c8854e5818d0bfbfd5a3212dd44e52a74e793faeac4c2eca9d21fc2ea37ef81b99798c8b935b3b16a2077a0f1095c3213fbbc619103b65cc2834646602fffc67c3eeef66cacf9720285033f22e9704eda1fc19aaa713165bf0068f10be34088c0d1b36202d2d0da5a5a598376f1e5e7ef965a4a7a7e3c89123f5c714171763d4a8513878f0209e7bee393cfcf0c3f8f8e38f316edc38d4d4d458387afb19364c5a7d5e79a514f592fda901486b4b87ecb40961a0a81f7446661eed9c015103107f2e57f344dd111d6006840263c2040902ac5886959f2f9daa02551cee70c8fb50287f86f6ec299b0a6a0d40d88237383049a5c39933673063c60cdc72cb2d58bd7ab5c7e3162c5880caca4ae4e6e62221210100306cd8308c1b370e6fbffd3666ce9c69d6906dcfe904162e0ced59f250a33500292f0ffd8bc98404e0d1478169d3f47f6f5494b441b56b06242ece9cfd69060d92f78093279901a1c0888a02c68f9765588f3c62eebf1dc80e58aa5fffdafacd1603c9e1909f616b8d04aaaba5268f1990e0c0cb3e1dde7df75d1c3f7e1ccf3efb2c00e0dcb973a8abab6b715c565616d2d3d3eb830f00183b762c929292b072e54ad3c61b2ca64f37760147d66006a481c301bcf082b136a60e876441ec9a0109f4f22b959a3dcacd65068402273313d8be5dea9bcc949f1fb80e58aa295380a95303fb6f584d4b27ac83076549370390e0c00044874d9b36a163c78ef8eebbef909c9c8c0e1d3aa053a74eb8efbefb70fefc7900c091234770e2c4090c1932a4c5f70f1d3a14b9566fc94ae4a3ae5de5961910dfd9753342330390cb2f07a2a31b0290500f5ac91ae9e95227b1668d79ffe68913f23e19e80cc8c540cd8078cbf4b0056f706100a2436161212e5cb88049932661c2840978efbdf770d75d7761c99225b8f3ce3b0100253f36b4efd6ad5b8befefd6ad1b4e9d3ac53a100a6a6161b26f003320beb3eb66846606204ea7b4e4cec961d04a81d3b9333076acb9ddb002dd01eb629292029c39d3b067903b0505329971c925e68d8b8c630d880e67cf9ec50f3ffc807befbd178b172f06004c9a3409d5d5d578edb5d7f0f4d34fa3b2b2120010ee66138a8888080040656525c2c2c2dcfe1b73e6cc41e766576dd3a74fc7f4e9d3fdf95f21f28996bd407831d9baf878d945dd4eeaea806fbf352f00016419d6860d5c824581959909fcea579299888d6dfdf8da5a60eb56e0da6b8ded2b959f2fc5e7975faeff7ba9a9c69db0ba77777f8cda01cb9f9bfbae58b1022b56ac68725fb9bacb2ef98401880e913f5664360f06a64f9f8ed75e7b0ddbb76fc715575c0100f54bb21aabaaaa6af23cee2c5ebc1857856a336f0a195a021066405a67c70cc8f7df4b31a7d90188dac99caf190a945b6f9500e4fdf7016fbd60eaea80d5ab65a7f8bd7b81175f041e7a48ffbf979f2f7b04856a772a33f5ed2b3fc7bc3cc964b913880e58ee26807372723078f060fffe4317212ec1d2a1fb8f6177bcda3ff347713f36f42f2b2bab3fa6c44d9eb0a4a4042e97cb63f6832858c4c4780f40148519102dd41a103b75b0316b0f90c61aefa3c2d70c054a6c2c306a94e765588a027cf49104c4d3a6c9de1d6969128c18614607ac8b45dbb692ddf05688ce3d40820b03101dd4c2f2e2666d348e1e3d0a00888d8d45f7eedd111b1b8b9d3b77b6f8feecec6ca4a6a6067ea04401d65a06a4b25266d1399bed5d5c9cecf07bf6acd523696045009292d2304bccd70c05526626b079b34c90a81405d8b811b8fa6a60e244790d7efe39b06e1df09fff097cf515f0e3c7bc2e6674c0ba9878eb8475e60c70ec18039060c2004487a93ff6b95bb66c5993fbdf78e30d84858561f4e8d10080cccc4cac5dbbb649a0b279f36614161662ca9429a68d9728505c2ea0b4d4f3e3ea873b67b3bd5393a976ea845554244d06cc0c04c2c2800103e4cf7ccd5020dd761b505323990e40028dd1a3811b6f94da814d9b802d5ba4ee03006eb94566dff576cf3a730638728419107ff2b617484181dc3200091eac01d12135351577dd7517de7cf34d5cb87001a3468dc2d6ad5bb17af56a3cf1c413b8e4c7d60b4f3cf10456ad5a85ebafbf1eb367cf46454505162e5c88810307d677cb220a66ad6540cacae496b3d9defdb87a13df7f2f6bc5f5aaad052e5cd0766cbb76da8a33cdec80d5d8555701df7cc3d70c05568f1e92e958b20458be1cf8e413e9c2f6d147c04f7fdaf277a44b17a939c8ca02eebf5ffbbfa3ced43300f19f9414a9993b75aaa11dbc4a0d4058f01f3c9801d169c99225f8ddef7e871d3b7660eedcb9d8b56b17162f5e8cf9f3e7d71f93909080cf3efb0c89898978fcf1c7b168d122a4a7a763e3c68dacffa090a006209e6a179801d146cd80182944afaa928ba988086d5ffdfa017ffb9b14d87a6355003274a8740ce26b86026df264e0cb2fa5dbdbaa55d2023a3ddd73809e91017cf699f7ac6f736a00f2635f1af283c69db09a2b2890f7d34e9dcc1d1319c70c884e6ddbb6c5bc79f3306fde3cafc7a5a4a460fdfaf5268d8ac85c2e97ccbc5754c8729de69801d1a66b57b9e836b2046bf76ef9be050b809e3dbd1f5b5707ac5c094c9f2ec73ff38cac757777c15554045c779dfef1f8ea8e3b80810381f6edcdffb7e9e2f2c003406aaa2cbd6ad3a6f5e3274d02eebd17f8e003e0eebbb5fd1bf9f912c84745f934546a242949f60dcacb03aeb9a6e9632c400f3e0c40884837974b6e4f9e741f803003a28dd3299d798c64407273e5e269ce1cc04b67ef7a33664831ed7ffd975c500d1902cc9fdfb0f61d908c9655199076ed80e1c3cdff77e9e2131eeeb995ab3b7171c0c891b20c4b6b00c20e58fe171121ed783d65401a77d323fbe3122c22d2ad7100e24e5959c3d21ff22e2ece58062427472e70b4041faab43429b2fdf453b9e01f3f5eb21ddbb6c9e3e5e592d5b2220021b2b38c0cf9dd397d5adbf1ec801518ee3a61290a3320c188010811e9a62500e1f22b6de2e38d67408cee597afdf5c0175f007fff3b70ee9c042137ded8b0df010310a2a63232a47bd6dab5ad1f5b59091c3ac40c4820b8eb8475ec984c9c3000092e0c408848b7d602106e42a89dba19a11e3535c0ae5dc6031040965d4d98007cfdb56ccc76f428f0cb5fca630c40889a4a489025825959ad1f5b502075570c40fc2f25459a0734de3b892d788313031022d22d2a4a96f03003e2bbb838fd1990bd7b81f3e7fdb3e6d9e190bd1176ed92b6a48f3dd6d09d8b881a646400ebd74bd6d01bb6e00d1cf567ba6f5fc37d0505524fd7b7af35632263188010916e0e87f7bd409801d1ce48062437576e5353fd378e366d809ffd0c78fe796dfb85105d6c32336579556b0d2ef3f3e5f7baf95e15e43bb5ad71e36558050540efded25c80820703102232c45b00c20c8876717112b055576bff9e9c1cd9b8d05d0732220a8cc444d9b4b0b56558ec8015381d3bca72b8c685e805054072b27563226318801091213131cc80f88391cd087d29402722e33232a410fdfc79cfc7b003566035ef84c50e58c18901081119c20c887fc4c5c9add6655875750c4088ac9299291d97366d72fff8850b7241cc0c48e034ee8475e10270e000039060c40084880c71b980d252f78f3103a29dde0cc881037201c44db788cc979222cb7d3c2dc33a7040bad43100099c9414f939575703870fcbcf9b0148f0610042448678ca80d4d60267ce3003a2556cacdc6acd80a805e80c4088cce770c832ac0f3e90d9f7e6d4a5415c821538fdfac9e74c61215bf006330620446488a70044dd299819106dc2c32558d39a01c9c991224c3570212273656602a74e019f7dd6f2b1fc7ca05327e0924bcc1fd7c542cd2ee5e54900121121ef89145c18801091212e976c06d5bc7b535999dc3203a25d5c9cbe0c08eb3f88ac73d555b259a7bb65586a072cb6b20e9cd8586982929f2f01c8e597cb3e20145c78ca88c8104fbba19797cb2d3320dac5c76bcb80288a644018801059475d86b5668d3485682c3f9ff51f66503b61b1056ff06200424486780a409801d14feb6684c5c552f8cffa0f226b656602c78e015f7dd5705f5d1db0772feb3fcca076c2620bdee0c50084880c692d00610644bbb8386d1910b5009d1910226ba5a5499d47e36558df7d079c3bc70c8819525224d8fbee3b0620c18a01081119e26d0996c3c15dbaf5d09a01c9c991b5cf3d7a047e4c44e499d309dc761bf0de7bb2341268e880c50024f0faf56ba83f6400129c18801091215dba48a0e12e03d2a9138b02f5888b034e9c68b99ebc39b5009d05ae44d6cbcc048a8a64620090002432520ad429b01a07790c4082132f1188c890366da4cec35d0684cbaff4898f97bef6a74e793f2e2787f51f447671dd7540d7ae0dcbb0f2f2a420ba4d1b6bc77531484800a2a3e5e7af66e329b830002122c3dced055256c60274bde2e2e4d6db32ac1327a4089df51f44f6d0b62d70ebad1280280a3b6099c9e1909f35b31fc18b01081119e62e00610644bff878b9f55688ce027422fbc9cc944e4c7979f2c50e58e679e411e0a187ac1e0519d5d6ea011051f08a896106c41fb464407272800e1d80be7dcd191311b5ee861be4f7f2cf7f96f73e6640cc33658ad523205f30034244863103e21f1d3a001111de33206afd078bfb89ec233c1c484f07de7843fece0084481b7e941191612e976c8cd7183320fa391c9205f19601c9cd65013a911d656602e7cf4b4dc86597593d1aa2e0c025584464183320fe131fef390372fa34b07f3feb3f88ec68fcf886f6bbedda593d1aa2e0c00084880c73b9a4756c5d9d2c0d521466408cf29601d9b54b6e198010d94f5414f0f39f33f820d28301081119e67249f071fab4643d2a2b819a1a66408c888f07f6ec71ff584e8ed4885c7185b96322226d5e7fddea11100517d680109161ea0650ea32acb232b9650644bff878cf19909c1c60e04059634e444414ec1880109161cd0390f272b9650644bfb838cf35202c402722a250c20084880c6306c47fe2e3811f7e00ce9e6d7a7f65a5ecb0ccfa0f22220a150c4088c8304f01083320faa99b1136cf82ecde0dd4d632002122a2d0c10084880c8b8c94afe64bb09801d12f3e5e6e9bd781e4e4006dda00575e69fe988888880281010811f9a4f15e206565d2ad2922c2da3105233503e22e00e9df9f3f5322220a1d0c4088c8278d0390f272663f8c72b9642f95e64bb058804e4444a186010811f92426a6690684f51fc6b469233fcbc619909a1ae05fff62fd0711118516062044e493e619100620c6c5c737cd80e4e703d5d5cc8010115168610042443e71b980d252f97359199760f9222eae69062427476e5353ad190f11115120300021229f3003e23fcd33203939405212d0a1837563222222f237062044e493e65db09801312e3ebe69068405e84444148a188010914f5c2ed9adbbb29219105fc5c5356440eaea807ffe9305e84444147a1880e8b075eb56389d4eb75fd9d9d94d8ecdcfcfc7f8f1e3d1a14307b85c2ecc983103a5ea4279a210d278377466407c131f0f9c3a25ddaff6ef07ce9e6506848888424f5bab07108c66cf9e8da1438736b92f3131b1fecfc5c5c518356a14ba74e982e79e7b0e15151558b4681176efde8decec6c848585993d64a280510390e3c7818a0a66407ca16e4678e24443013a031022220a350c400c183972243232323c3ebe60c10254565622373717090909008061c38661dcb87178fbedb73173e64cb3864a14706a0072f0a0dc3203625c7cbcdc7effbd0420bd7ac9de20444444a1844bb00c501405151515b870e182dbc7b3b2b2909e9e5e1f7c00c0d8b16391949484952b579a354c2253a801c8fefd72cb0c88716a06e4fbef59804e4444a18b01880177de79273a75ea84c8c8488c193306df7cf34dfd63478e1cc18913273064c89016df3774e850e4e6e69a3954a280ebd409703a1b021066408c6b1c80e4e4b0009d888842139760e9101e1e8ec99327e3e69b6f464c4c0cf6ecd983458b1661e4c891f8f2cb2f919a9a8a9292120040b76edd5a7c7fb76edd70ead429d4d4d4b00e844286d30974ed0a1c38207f6706c4b88808a06347e0ebafa5189d191022220a450c4074484b4b435a5a5afddfd3d3d33179f2640c1c3810bff9cd6fb06edd3a545656029060a5b988880800406565a5c70064ce9c39e8dc6c0a79faf4e9983e7dbabffe1b447ee7723103e22ff1f1c0faf5f26766408888acb362c50aac58b1a2c97de5e5e5168d26b43000f151626222264e9c88356bd64051144446460200ce9f3fdfe2d8aaaa2a36e2bcb1000010774944415400a83fc69dc58b17e32a5e75509071b9807dfb00874366f0c9b8b838e01fff90dbeeddad1e0d11d1c5cbdd04704e4e0e060f1e6cd18842076b40fca067cf9ea8aeaec6b973e7ea975ea94bb11a2b292981cbe5e2f22b0a396aa726b51e848c533b610d1a24011d111151a86106c40f0e1e3c88c8c848444747233a3a1ab1b1b1d8b973678be3b2b3b3919a9a6ac10889024bed84c5fa0fdfa985e84c84121151a8e25ca50e274e9c6871dfae5dbbf0e1871fe2c61b6facbf2f3333136bd7ae45717171fd7d9b376f46616121a64c9962ca5889ccc400c47f1a6740888888421133203a4c9b360deddbb7475a5a1ae2e2e290979787a54b97223a3a1acf3fff7cfd714f3cf10456ad5a85ebafbf1eb367cf46454505162e5c88810307e2ce3befb4f07f4014186a00c20274dfa901083320444414aa9801d1e1b6db6e43696929fef8c73fe2fefbefc7aa55ab3079f2647cfdf5d7484e4eae3f2e2121019f7df619121313f1f8e38f63d1a245484f4fc7c68d1b59ff4121891910ff99300178ec31a06f5fab474244441418cc80e8306bd62ccc9a354bd3b129292958aff6d2240a71cc80f84fefde40a3842a111151c8610684887cc60c0811111169c50084887cc60c0811111169c50084887cc60c0811111169c50084887c161303242602fdfb5b3d12222222b23b16a11391cfc2c280fdfbad1e05111111050366408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c408888888888c8340c407cf4ecb3cfc2e97462c080012d1ecbcfcfc7f8f1e3d1a14307b85c2ecc983103a5a5a5168c927cb562c50aab87405ef0fcd817cf8d7df1dcd81bcf0f853206203e282e2ec682050b1015150587c3d1e2b151a346e1e0c18378eeb9e7f0f0c30fe3e38f3fc6b871e350535363d188c9287e10d81bcf8f7df1dcd817cf8dbdf1fc50286b6bf50082d9c30f3f8c112346e0c2850b2d321b0b162c40656525727373919090000018366c18c68d1b87b7df7e1b3367ceb462c84444444444966206c4a06ddbb6212b2b0b8b172f86a2282d3220595959484f4faf0f3e0060ecd8b1484a4ac2ca952bcd1e2e11111111912d300031a0b6b616b366cdc2cc9933d1bf7fff168f1f397204274e9cc09021435a3c3674e850e4e6e69a314c2222222222dbe1122c03962c59826fbffd169f7efaa9dbc74b4a4a0000ddba756bf158b76edd70ead429d4d4d4202c2cacfefeaaaa2a0052b84ef6535e5e8e9c9c1cab87411ef0fcd817cf8d7df1dcd81bcf8f3da9d769959595168f24b83100d1e9e4c99398376f1ee6cd9b0797cbe5f618f545191e1edee2b1888888fa631a0720870e1d0200dc7efbedfe1e32f9c9e0c183ad1e0279c1f3635f3c37f6c573636f3c3ff675f8f0615c73cd35560f23683100d1e9a9a79e424c4c0c66cd9ae5f198c8c84800c0f9f3e75b3ca6663ad4635437dd7413fef77fff17bd7bf76ef1181111111159afaaaa0a870e1dc24d37dd64f550821a03101d0a0b0bf1faebaf63f1e2c5282e2eaebfbfaaaa0ad5d5d5282a2a42c78e1deb975ea94bb11a2b292981cbe56a92fd0080989818fcfce73f0fec7f80888888887c3262c408ab8710f41c8aa228560f22586cddba1563c68cf17acc9c3973f0873ffc01f1f1f1183d7a34feeffffeafc9e3c9c9c9e8d5ab17366edc18c8a11211111111d91233203a0c1830006bd6ac69d2725751143cf5d453387bf62c5e7ae9252426260200323333f1ce3befa0b8b8b8be15efe6cd9b515858885ffffad7968c9f88888888c86acc80f8c1e8d1a371f2e449ecdebdbbfebee2e2620c1a34089d3b77c6ecd9b351515181850b17a257af5ed8b973678b255844444444441703ee03e2070e87a3c54684090909f8ecb3cf90989888c71f7f1c8b162d427a7a3a366edcd824f8387ffe3c1e7bec3174efde1deddbb7c7d5575f8d4d9b3699fd5fb8e89d3b770ebffded6f317efc7874edda154ea713efbcf38edb63f3f3f3317efc7874e8d0012e970b3366cc406969a9c923be78ecdcb9130f3cf000faf7ef8fe8e8685c7ae9a598366d1a0a0b0b5b1ccb7363ae3d7bf660ca9429484c4c445454145c2e17468c1881e5cb97b73896e7c67acf3efb2c9c4e27060c18d0e2319e1f736dddba154ea7d3ed577676769363796eac91939383891327c2e572212a2a0a03060cc02bafbcd2e4189e1be39801b1d8f4e9d391959585b973e7e2f2cb2fc75b6fbd859d3b7762cb962d6cef66a2c3870fa36fdfbeb8f4d24bd1a74f1f6cddba156fbffd3666cc98d1e43835b3d5a54b173cf8e083a8a8a8c0a2458bd0ab572f64676733b3150093274fc6575f7d852953a660e0c081282929c1abafbe8ab367cf62fbf6edf59b81f2dc986fddba7578f9e5973162c40874efde1d3ffcf00356af5e8dcf3fff1ccf3cf30c9e7cf249003c3776505c5c8ce4e464389d4ef4e9d307fffad7bf9a3cc6f3632eb5a674f6ecd9183a746893c76ebae9a6fa36ff3c37d6d8b061036eb9e5160c1e3c18d3a64d43747434f6efdf0f4551f0fcf3cf03e0b9f1994296d9b16387e2703894175f7cb1febeaaaa2ae5b2cb2e53468c1861e1c82e3ee7cf9f57befffe7b455114e5ebafbf561c0e87f2ce3befb438eede7bef55a2a2a294efbefbaefebe4d9b36290e874359ba74a969e3bd987cf9e5974a4d4d4d93fb0a0b0b95888808e5f6db6fafbf8fe7c61e6a6b6b95d4d454a557af5ef5f7f1dc586fdab469ca0d37dca08c1e3d5ab9f2ca2b9b3cc6f363be2d5bb6280e8743c9cacaf27a1ccf8df94e9f3eadc4c7c72b9999995e8fe3b9f10d97605968f5ead568dbb62d7ef9cb5fd6df171e1e8ebbefbe1b5f7df5158e1c3962e1e82e2eeddab5435c5c1c00692ce049565616d2d3d3eb1b0b00c0d8b16391949484952b57067c9c17a3b4b434b46ddbb45fc665975d86949414ecddbbb7fe3e9e1b7b703a9d4848486832fbc77363ad6ddbb6212b2b0b8b172f86a2282d960cf3fc58475114545454e0c2850b6e1fe7b931dfbbefbe8be3c78fe3d9679f05204bb4ebeaea5a1cc773e31b062016cacdcd45525212a2a3a39bdcafa663fff9cf7f5a312cf2e0c891233871e204860c19d2e2b1a14387223737d782515d9c1445c1f7df7f8f989818003c3756fbe1871f505a5a8a03070ee08f7ffc233ef9e4133cfae8a300786eac565b5b8b59b36661e6cc99f5cb151be3f9b1d69d77de894e9d3a2132321263c68cc137df7c53ff18cf8d35366dda848e1d3be2bbefbe437272323a74e8804e9d3ae1befbeeabdf609ae7c6776cc36ba1929292fa4d0b1b53ef3b7af4a8d943222fd48d253d9db353a74ea1a6a686eb3e4db07cf9721c3d7a14f3e7cf07c07363b5871e7a084b972e0500b46ddb162fbffc727d6697e7c65a4b962cc1b7df7e8b4f3ffdd4ede33c3fd6080f0fc7e4c99371f3cd37232626067bf6ecc1a2458b3072e4487cf9e597484d4de5b9b1486161212e5cb880499326e19e7beec10b2fbc802d5bb6e095575e41797939de7df75d9e1b3f600062a1caca4a848787b7b83f2222a2fe71b20ff57cb476cef88613587bf7eec5fdf7df8f112346e08e3bee00c07363b5b973e762ead4a9387af428962f5f8e071e7800919191b8e38e3b786e2c74f2e449cc9b370ff3e6cdab2f6a6e8ee7c71a696969484b4babff7b7a7a3a264f9e8c810307e237bff90dd6ad5bc7736391b367cfe2871f7ec0bdf7de8bc58b170300264d9a84eaea6abcf6da6b78fae9a7796efc804bb02c141919599fce6bacaaaaaafe71b20ff57cf09c59e7d8b163f8e94f7f8a2e5dba60f5ead5f56bd9796eac959c9c8c3163c6e0f6db6fc7ba75eb3076ec58cc9933075555553c37167aeaa9a71013138359b366793c86e7c73e1213133171e2446cd9b2058aa2f0dc5844fd994e9f3ebdc9fdeadfb76fdfce73e3070c402cd4ad5b37b7cbacd4d45ef7eeddcd1e1279a1a65ad5f3d3584949095c2e17673b02e8f4e9d398306102ce9c3983f5ebd7e3924b2ea97f8ce7c65e32333371faf469ecddbb97e7c62285858578fdf5d7316bd62c141717e3f0e1c3387cf830aaaaaa505d5d8da2a222949595f1fcd84ccf9e3d515d5d8d73e7cef1dc5844bdf68a8f8f6f72bfdaa8a6acacacfe189e1be318805868d0a0412828284045454593fb77ecd80100484d4db56258e4418f1e3d101b1b8b9d3b77b6782c3b3b9be72b80aaaaaa70cb2db760fffefd58bb762daeb8e28a268ff3dcd88bba3cc1e974f2dc58e4c89123a8ababc3830f3e88be7dfbd67f656767a3a0a0007dfaf4c133cf3cc3f36333070f1e44646424a2a3a3796e2ca2169617171737b95f9d308e8d8d45f7eedd796e7cc400c44293274f466d6d6d7df12620e9bcb7de7a0b575f7d357af4e861e1e8c89dcccc4cac5dbbb6c91bd3e6cd9b515858882953a65838b2d0555b5b8b69d3a661c78e1d58b56a15860f1feef6389e1bf39d3871a2c57d353535f8cb5ffe0297cb55df7589e7c67c03060cc09a356bf0fefbefd77fad59b306fdfbf7c7a5975e8af7df7f1f77df7d37009e1f2bb8fbddd9b56b173efcf043dc78e38df5f7f1dc986fead4a9008065cb9635b9ff8d37de40585818468f1e0d80e7c657dc09dd62d3a64dc39a356b3077ee5c242626e29d77dec1d75f7f8dcd9b37e3da6bafb57a781795575f7d15e5e5e5387af428962c59828c8c8cfa598c071f7c101d3b76acdff9b473e7ce983d7b362a2a2ab070e142f4ead50b3b77ee64ca3500e6cc9983975f7e19b7dc728bdb37f5db6fbf1d00786e2c70db6db7a1a2a202a3468d42f7eedd71ecd8312c5fbe1c05050578ebadb73063c60c003c3776327af4689c3c7912bb77efaebf8fe7c77c63c68c41fbf6ed91969686b8b838e4e5e561e9d2a5080f0fc7575f7d85e4e464003c3756b9e79e7bf0e69b6f62ead4a918356a14b66edd8ad5ab57e389279ea8efbec873e3230b37412445763e7fe49147946eddba29111111caf0e1c3950d1b36583dac8b52efdebd1587c3a1381c0ec5e9742a4ea7b3fecf454545f5c7edd9b347b9e9a69b94a8a828a56bd7aeca2f7ef10be5f8f1e3168e3cb48d1e3dbafe5c34ff723a9d4d8ee5b931d7dffef63765dcb871ca25975ca2848585292e974bb9f9e69b954d9b36b53896e7c61e468f1ead0c1830a0c5fd3c3fe67af9e59795e1c3872b2e974b090b0b537af4e8a1cc9831433970e0408b63796ecc575353a3fcfef7bf577af7eeadb46bd74e494a4a525e7ae9a516c7f1dc18c70c081111111111998635204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444641a06204444444444649aff07ce873914b7799b030000000049454e44ae426082}\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u35201?\u35299?\u26512?\u30340?json\u25991?\u20214?\u20301?\u20110?{\f1 data/2014-01-01-0.json}\u65292?\u22823?\u23567?6.6M\u65292?\u26174?\u28982?\u25105?\u20204?\u21487?\u33021?\u38656?\u35201?\u29992?\u27599?\u27425?\u21482?\u35835?\u19968?\u34892?\u30340?\u31574?\u30053?\u65292?\u36825?\u36275?\u20197?\u35299?\u37322?\u20026?\u20160?\u20040?\u35832?\u22914?sublime\u25171?\u24320?\u30340?\u26102?\u20505?\u24456?\u24930?\u65292?\u32780?\u29616?\u22312?\u25105?\u20204?\u21482?\u38656?\u35201?\u37324?\u38754?\u30340?json\u25968?\u25454?\u20013?\u30340?\u21019?\u24314?\u26102?\u38388?\u12290?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 ==,\u36825?\u20010?\u25991?\u20214?\u20195?\u34920?\u20160?\u20040?\u65311?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 {\b 2014\u24180?1\u26376?1\u26085?\u38646?\u26102?\u21040?\u19968?\u26102?\u65292?\u29992?\u25143?\u22312?github\u19978?\u30340?\u25805?\u20316?\u65292?\u36825?\u37324?\u30340?\u29992?\u25143?\u25351?\u30340?\u26159?\u24456?\u22810?\u12290?\u12290?\u19968?\u20849?\u26377?4814\u26465?\u25968?\u25454?\u65292?\u20174?commit\u12289?create\u21040?issues\u37117?\u26377?\u12290?}\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 \u25968?\u25454?\u35299?\u26512?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 import json\line +for line in open(jsonfile):\line + line = f.readline()\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u28982?\u21518?\u20877?\u35299?\u26512?json\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 import dateutil.parser\line +\line +lin = json.loads(line)\line +date = dateutil.parser.parse(lin["created_at"])\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u36825?\u37324?\u29992?\u21040?\u20102?{\f1 dateutil}\u65292?\u22240?\u20026?\u26032?\u40092?\u20986?\u28809?\u30340?\u25968?\u25454?\u26159?string\u38656?\u35201?\u36716?\u25442?\u20026?{\f1 dateutil}\u65292?\u20877?\u21040?\u25968?\u25454?\u25918?\u21040?\u25968?\u32452?\u37324?\u22836?\u12290?\u26368?\u21518?\u26377?\u23601?\u26377?\u20102?{\f1 parse_data}\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 def parse_data(jsonfile):\line + f = open(jsonfile, "r")\line + dataarray = []\line + datacount = 0\line +\line + for line in open(jsonfile):\line + line = f.readline()\line + lin = json.loads(line)\line + date = dateutil.parser.parse(lin["created_at"])\line + datacount += 1\line + dataarray.append(date.minute)\line +\line + minuteswithcount = [(x, dataarray.count(x)) for x in set(dataarray)]\line + f.close()\line + return minuteswithcount\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u19979?\u38754?\u36825?\u21477?\u20195?\u30721?\u23601?\u26159?\u23558?\u19978?\u38754?\u30340?\u35299?\u26512?\u20026?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 minuteswithcount = [(x, dataarray.count(x)) for x in set(dataarray)]\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u36825?\u26679?\u30340?\u25968?\u32452?\u20197?\u20415?\u20110?\u35299?\u26512?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 [(0, 92), (1, 67), (2, 86), (3, 73), (4, 76), (5, 67), (6, 61), (7, 71), (8, 62), (9, 71), (10, 70), (11, 79), (12, 62), (13, 67), (14, 76), (15, 67), (16, 74), (17, 48), (18, 78), (19, 73), (20, 89), (21, 62), (22, 74), (23, 61), (24, 71), (25, 49), (26, 59), (27, 59), (28, 58), (29, 74), (30, 69), (31, 59), (32, 89), (33, 67), (34, 66), (35, 77), (36, 64), (37, 71), (38, 75), (39, 66), (40, 62), (41, 77), (42, 82), (43, 95), (44, 77), (45, 65), (46, 59), (47, 60), (48, 54), (49, 66), (50, 74), (51, 61), (52, 71), (53, 90), (54, 64), (55, 67), (56, 67), (57, 55), (58, 68), (59, 91)]\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 Matplotlib\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u24320?\u22987?\u20043?\u21069?\u38656?\u35201?\u23433?\u35013?``matplotlib\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 sudo pip install matplotlib\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u28982?\u21518?\u24341?\u20837?\u36825?\u20010?\u24211?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 import matplotlib.pyplot as plt\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u22914?\u19978?\u38754?\u30340?\u37027?\u20010?\u32467?\u26524?\u65292?\u21482?\u38656?\u35201?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u26368?\u21518?\u20195?\u30721?\u21487?\u35265?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 #!/usr/bin/env python\line +# -*- coding: utf-8 -*-\line +\line +import json\line +import dateutil.parser\line +import numpy as np\line +import matplotlib.mlab as mlab\line +import matplotlib.pyplot as plt\line +\line +\line +def parse_data(jsonfile):\line + f = open(jsonfile, "r")\line + dataarray = []\line + datacount = 0\line +\line + for line in open(jsonfile):\line + line = f.readline()\line + lin = json.loads(line)\line + date = dateutil.parser.parse(lin["created_at"])\line + datacount += 1\line + dataarray.append(date.minute)\line +\line + minuteswithcount = [(x, dataarray.count(x)) for x in set(dataarray)]\line + f.close()\line + return minuteswithcount\line +\line +\line +def draw_date(files):\line + x = []\line + y = []\line + mwcs = parse_data(files)\line + for mwc in mwcs:\line + x.append(mwc[0])\line + y.append(mwc[1])\line +\line + plt.figure(figsize=(8,4))\line + plt.plot(x, y,label = files)\line + plt.legend()\line + plt.show()\line +\line +draw_date("data/2014-01-01-0.json")\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 \u27599?\u21608?\u20998?\u26512?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u32487?\u19978?\u31687?\u20043?\u21518?\u65292?\u25105?\u20204?\u23601?\u21487?\u20197?\u20998?\u26512?\u29992?\u25143?\u30340?\u27599?\u21608?\u25552?\u20132?\u24773?\u20917?\u65292?\u20197?\u24471?\u20986?\u29992?\u25143?\u30340?\u30495?\u27491?\u30340?\u24037?\u20855?\u25928?\u29575?\u65292?\u27599?\u20010?\u31243?\u24207?\u21592?\u30340?\u24037?\u20316?\u26102?\u38388?\u21487?\u33021?\u26159?\u19981?\u19968?\u26679?\u30340?\u65292?\u22914?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 {\pict\pngblip\picw514\pich428\picwgoal5160\pichgoal4300 89504e470d0a1a0a0000000d4948445200000202000001ac080200000020d958980000012f694343504943432050726f66696c6500002815636060327074717265126060c8cd2b290a72775288888c5260bfc0c0c1c0cd20cc60cc609d985c5ce01810e0c3000479f979a9201a157cbbc6c00812b9ac0b320b558e208f2bb9a0a804a8ea0f101ba5a416273330301a00d9d9e525054071c63940b648523698bd01c42e0a0972068a1f01b2f9d221ec2b20761284fd04c42e027a02a8e60b487d3a98cdc401622741d8322076496a05c85e06e7fc82caa2ccf48c12052303030305c794fca45485e0cae292d4dc6205cfbce4fca282fca2c492d414a05a88fb40ba1804210a4121a661686969a10916a522018a0788719f03c1e1cb2876062186b028b9b4a80cca636432666020c4479831478281c17f290303cb1f8498492f03c3021d0606fea9083135430606017d06867d7300c3af506fec25acb40000000970485973000016250000162501495224f00000019d69545874584d4c3a636f6d2e61646f62652e786d7000000000003c783a786d706d65746120786d6c6e733a783d2261646f62653a6e733a6d6574612f2220783a786d70746b3d22584d5020436f726520352e342e30223e0a2020203c7264663a52444620786d6c6e733a7264663d22687474703a2f2f7777772e77332e6f72672f313939392f30322f32322d7264662d73796e7461782d6e7323223e0a2020202020203c7264663a4465736372697074696f6e207264663a61626f75743d22220a202020202020202020202020786d6c6e733a657869663d22687474703a2f2f6e732e61646f62652e636f6d2f657869662f312e302f223e0a2020202020202020203c657869663a506978656c5844696d656e73696f6e3e3531343c2f657869663a506978656c5844696d656e73696f6e3e0a2020202020202020203c657869663a506978656c5944696d656e73696f6e3e3432383c2f657869663a506978656c5944696d656e73696f6e3e0a2020202020203c2f7264663a4465736372697074696f6e3e0a2020203c2f7264663a5244463e0a3c2f783a786d706d6574613e0a9c3576df00001f2c494441547801eddd7d905d657d07f01b08e64a2d9baa64690737554ca6b56c7ccb32b5093328d851924e9a0d53e8522dc651dc4cc560673a647c0b2a13aa8c41d0ac81313a7658a13549ad80339d04a8d9944a02ce64e31f66f58f046d598a361b5fb84402bdf7ee4b7643ee66cfeed9e73ee79c4f2643eeee39f7797ecfe777f67eef39f7de65ce3347874afe10204080405105ce2aeac2ad9b000102046a0262c07140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e0001027311102040205a811f7fffe99ffcd733519577d90716cd3bf79ca84a9a6131ce066608e8ee040810c8b68018c876ff544f800081190a88811902ba3b010204b22d2006b2dd3fd513204060860262608680ee4e8000816c0b88816cf74ff504081098a180189821a0bb13204020db026220dbfd533d0102046628e0e3630d018fdd76dbf307fa1b6e0ebe614eeb82dffbfce7834f6b420204722ee06c20e70db63c0204084c2e200626f7b19500010239171003396fb0e51120406072013130b98fad040810c8b98018c879832d8f000102930b8881c97d6c25408040ce05c440ce1b6c79040810985c400c4cee632b010204722e200672de60cb234080c0e4026260721f5b0910209073013190f3065b1e0102042617f03b851afa7cedcfcffae15bcf6eb839f886f3cf3dfb96e0939a900081dc0b381bc87d8b2d9000010293098881c9746c23408040ee055c14ca7d8b2d90408605fee07ff6bef2f17f8d6a0173afbba3546a89aaa41916e36c608680ee4e8000816c0b88816cf74ff504081098a1808b42330474f79ac00ffef7899e835f8aca62fd1bfffe0daffc93a84a520c8138059c0dc4d917551120402090801808046d1a020408c429e0a2509c7dc958554b2bcfddf7b3a7a22afa577ff4dc89a80a520c8158059c0dc4da19751120402088801808c26c12020408c42a200662ed8cba0810201044400c0461360901020462151003b176465d0408100822200682309b84000102b10a8881583ba32e0204080411100341984d4280008158057c7c2cd6cea88b00815269f79bcefa4e4b44ff13c06a4f6e7bf99cf3f2d51a6703f9eaa7d510204020a1801848086677020408e44bc045a186fddcf0cc2fcef9ef887e4fce89df9df3ab86c5da40800081690a381b98269cbb112040201f0262201f7db40a0204084c53400c4c13cedd081020900f0131908f3e5a05010204a6292006a609e76e040810c8878018c8471fad82000102d3141003d3847337020408e443400ce4a38f5641800081690af8f8d834e19a75b7dffccbb72adff94eb3663fedbcf3b77c39aedff972da2a7d9300810602ce061ac0f8360102048a2120068ad167ab24408040030117851ac0c4faed7f7feb590fbe3aae6b309b5f563a27562e75112070460167036724b203010204f22c2006f2dc5d6b234080c019055c143a23911d0810689ac09a63bffa9b9f45f4fbdeab1043274e348d6376267636303bae46254080404604c440461aa54c020408cc8e8018981d57a31220402023026220238d52260102046647400ccc8eab51091020901101ef146ad8a84f3d7fdd81e36b1a6e0ebe61c16f5fb6b954bafad82fff36b6374ebcf042700c131220909a80b381d4280d448000812c0a88812c764dcd040810484d400ca44669200204086451400c64b16b6a264080406a026220354a03112040208b0262208b5d533301020452131003a9511a880001025914100359ec9a9a091020909a8018488dd240040810c8a28018c862d7d44c800081d404c4406a9406224080401605c44016bba666020408a426200652a33410010204b2282006b2d83535132040203501bf683a35ca220ff4fd17fe78f3f15ba212b8e9858bdaa32a48310462157036106b67d4458000812002622008b34908102010ab801888b533ea224080401001311084d9240408108855400cc4da19751120402088801808c26c12020408c42a200662ed8cba0810201044400c046136090102046215f0f1b1583ba32e02044aa56f9e78fb8ee36f884a624be9152d511534e3629c0dcc98d000040810c8b28018c872f7d44e800081190b888119131a800001025916100359ee9eda091020306301313063420310204020cb02de2994e5eea93d9b020fdffda3e3bf39114fed0b5e7fde9b575c184f3d2a092ce06c2030b8e90810201097801888ab1faa214080406001311018dc74040810884b400cc4d50fd510204020b08018080c6e3a020408c4252006e2ea876a0810201058400c0406371d010204e212100371f54335040810082ce0e36381c14d174ee0d95f1effdeb61f879b6f0a33bdfecfcebfa8e3fc371df8d28b43c7a6b07ba05dce99b3b454fa70a0c94c139f80b381f87aa2220204080414100301b14d45800081f8045c148aaf272a4a49e065bffd55c7e3ff98d260e90c537edd55a5d25fa433965108a424e06c202548c3102040209b0262209b7d533501020452127051282548c3c42730746ee9a6f79d1d555d7ff9ba39574655906208944ace061c0504081028b480182874fb2d9e00010262c03140800081420b888142b7dfe209102020061c0304081028b480182874fb2d9e00010262c03140800081420b888142b7dfe2091020e0e363193b06fee9f9777efbf892a88ade5a7a79a9f4eba84a520c01025317703630752b7b1220402087026220874db5240204084c5d400c4cddca9e040810c8a18018c861532d890001025317100353b7b2270102047228e09d42396caa250d0bbcf2c40bf7fdeca9a8349e3dffd7c7a32a483104fca269c7000102040a2ee0a250c10f00cb2740a0e8022e0a15fd08b0fef0026d97fdfcac678f869fb7d18cc7db8e3ddb689bef1740c0d940019a6c89040810682c20061adbd842800081020888810234d912091020d058400c34b6b185000102051010030568b225122040a0b18018686c630b0102040a2020060ad0644b24408040630131d0d8c6160204081440400c14a0c99648800081c60262a0b18d2d040810288080182840932d910001028d05c440631b5b081020500001315080265b220102041a0b8881c636b6102040a0000262a0004db644020408341610038d6d6c214080400104c440019a6c89040810682c20061adbd842800081020888810234d912091020d058400c34b6b185000102051010030568b225122040a0b18018686c630b0102040a2020060ad0644b24408040630131d0d8c6160204081440400c14a0c99648800081c60262a0b18d2d0408102880c0dc02acd11209c425f09ee3370d1d3f114f4d1dcfcf5f1f4f352a092ee06c2038b9090910201093801888a91b6a214080407001178582939b3094c0cf4be75d7bfc9650b34d699ebf3af1fbaba6b4a39d088413703610ceda4c0408108850400c44d81425112040209c801808676d2602040844282006226c8a92081020104e400c84b33613010204221410031136454904081008272006c2599b89000102110a8881089ba22402040884131003e1accd448000810805c440844d5112010204c209888170d6662240804084026220c2a62889000102e104c440386b33112040204201311061539444800081700262209cb59908102010a1801888b0294a2240804038013110ceda4c0408108850400c44d81425112040209c801808676d2602040844282006226c8a92081020104e400c84b33613010204221410031136454904081008272006c2599b89000102110a8881089ba22402040884131003e1accd448000810805c440844d5112010204c209888170d6662240804084026220c2a62889000102e104c440386b33112040204201311061539444800081700262209cb59908102010a1801888b0294a2240804038013110ceda4c0408108850400c44d81425112040209c801808676d2602040844283037c29a944480407881731fde78cecf1e0b3f6fa3195ff89d57ff72f5371a6df5fd14059c0da4886928020408644f400c64af672a264080408a026220454c43112040207b0262207b3d53310102045214100329621a8a000102d9131003d9eb998a09102090a280184811d350040810c89e8018c85ecf544c8000811405c4408a988622408040f604c440f67aa662020408a428200652c43414010204b2272006b2d73315132040204501319022a6a1081020903d013190bd9ea998000102290a888114310d45800081ec098881ecf54cc50408104851400ca4886928020408644f400c64af672a264080408a026220454c43112040207b0262207b3d53310102045214100329621a8a000102d9131003d9eb998a09102090a280184811d350040810c89e8018c85ecf544c8000811405c4408a988622408040f604c440f67aa662020408a428200652c43414010204b2272006b2d73315132040204501319022a6a1081020903d81b9d92b59c50408cc82c0a79f7fcf0f8eaf9a8581a739e4abce39e78e69ded5dd9209381b48e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e01020492098881645ef626408040ce04c440ce1a6a39040810482620069279d99b00010239131003396ba8e51020402099801848e6656f020408e44c400ce4aca19643800081640262209997bd0910209033013190b3865a0e0102049209cc79e6e850b27b44bff7256f79732a359e78d39a175ff5da54864a6790dffcdfdc47bf7ae2b5cb5e7cdddbd21930a551cefe8f3b5f9c7fe10b6f5c9dd278e90c73d613ff3ce737bf38b1fc43e90c97d22867fd78cf5987bfff7cb5aa79af4869c8148699f3f4a1b3fbffedc41b57bff8ea8b52182ead219e3d36f73fef3af1877ffae245cbd31a329571cefede97e7fcf6d95486aa0ef2d8133f486ba8698f2306a64de78e04081098a9801898a9a0fb13204080c00c05bc363043407727408040b605c440b6fba77a020408cc50400ccc10d0dd091020906d013190edfea99e0001023314100333047477020408645b606eb6cb8fb8fa4a6570607fffc09123c72aa552b965415bdbc5eded6d2de5e02557068f0c3e579bb5bca0adb5e1f495a3479eae7f82a4a535589195a1c1a787aa3a67f8b3a06d61c3b2cf70d7049b478a99d7d2d63a7fe2dd2a4347066b34a7db346cdbb260e1ec3776ac8f13ab3be5ab80ed3b39f3d8c173f25be36f4d7ae08ddf71366e572a0303fbfa0f1d393654fd2198775e6b5b7b7bfba2b6535a3c1b136769cc1c7e6e2002fecade6d37aefa68ef4b2b59bde9fe3bbb2f0df0a0363675e5d03d175eb26ef8cbcfee39fca1f6d3ff00ecddd0b2aaa7be57fb969feeb9364c8503bd2bdeb6ae6facd446376edb33785dfbac57d4bf6df9db3fda5f2a753efad4d7168d9fad72e0b20b2e3d582baefb89a3b7b68dafb2b2efb20baea86e5afdd57d77af593c7e4bfab72b07565d70e9de338e1bb07d63b59cb18fb73d3678dde2f1a663779ddd1b47fab6bd77e58df5de4d9ca873d3a35bd64de8f2c4ed45fbca45a1f43bbe7ff3156319b0ba6bfd27366dbaa16be463903b37ac7cd7e67de94f39d988277ffc3eded377fae7de95035f1fce80ea38217f38e64d78506db488f3e635da92e6f7db3ad6d687dbd17f6402d2507fdfe8e348cfc1899b2a03fdc39b56774c6921332bb7bc602af70fd9beb17aced4c7f3c6f60c7863a86fcb5b4633e0e2ceae1b3eb5e913ebbb46e6dfb1e16defdc523ff90d5850c4538981b49b33b8eb5d37579f54569f566e7ee2a9a1bbb7dcfc91ee759fdcf2c04f7fb4e7fafa54076fbe62f7c44793b42b683c5e6fcfc1d31dfb83fbb7ef1cbbd3d363b766fdc6a2353dd5df6532f6f7a78f6da94fd9f9f0e193dfac6eed0cf244b265d1d265f5e91fea1f1cbff281be07c6be7c70dfc44dfbb6d737adbfb8ed64d68eed9cf28df2e2bbc7593d73f4f05d9db519967d61cf1860edc6b635b35f4aa3952d3fa571638585e9e0c4b20e7f71e586fa773abf7d60f0916d3d9fbc71dd4736f63cf3d4a1bbbadb6bdfefdff0b95d8727dea5b85f8981947b5f191a7ea06dbf6fd3daf10f0ee5d625b71cb86778b227a770413ce5b24686ebfb7adf4b0ffdcade5b6f2fd57f346667d2a98f3af208560ef2f4ffd4b2ca6dabebe76cf7eeee1f773a30b8f7e69397adeeddbd7fdca6a30777d437755f11e05ce0d46a4b23560bcacd7bd83fb5a605cd69dca965d4bfae3cf764fddf1beebf75d9c49fc3ce4df78c3c213b72bae744a71d2defdf1403b3d4e1fee79e1bf788313c495bc79d5dcb2fae3ee2be64cb2c15f1d261efbd75f7a9c7fe60df07ab8f66fda565cba3888297d61cea3bf3dfda597f82dddb77f28c68f0d0676ad377df777ffd4ca577d79363bdab1cb9b79e0237ac98e5570542ad3f67f30c3f9778ee344fb916aefe42f7c5eda505a5fa3b2772b6ec692d470c4c8b6d0a777aef92ee07fb0f8f3d68d4efd1fad75b1e78e468df751da77f9d760aa34e7b97f6dbeed956bbe8d17fe3de8997a40676d7cf513ab7fcc3fbe2fa3d8ed35eeab4efb8a8e38afa7d7b06468906fb77d5bed3d9b16c69c735b55bbd63af1c545f18a8bf60db7e797b6b6d8b3fd5139478ce4c4a238ff15baf5df2c5070e9c92054bd7defac89ea1bbd77668dab0801848f948282fbe7cf8a26da9b4e3bd972eb9707ecb07d67dea9bdb77f51f1a9c180929cf7ba6e1facf5bb4f4fafa2b645b1f38346ee7c3df5cb7a3fae50d6b97bf26a69fe1711586bb595ed4beba3edbde43c3af01540eeebebdfa8d6b56b497cb6defa89f2a7c77ff91e1829e1c4e88f6ae8b5bc25518f74cbdd5e37cefae5dbbc7fd7df0813da3911ab6f6f2e21bb6d41b562a7de6da4b2fbaa065d5daeeaff46edfdb7fe89448085b56a4b38981d41b33bf73dbe16f6c1a7d4f42a9b4b3f7f60fbf7fcddb2f595c8d84bfdbb87de0d48b32a917d060c072ebb2ae8dd56d7b37f48e3c92954a95febe3b6abb2f5fbd7461a9d2acca6a1544f1a7bcf81df533a287fa8685061faabf81ea1db537029597aea8f57467efbe7a9c57fa7b6bf1797157871418ebdd1def5fb3eaaa35578ffbfbde6b573e34d09ce73fed5d3d0fdfb3e9e2d1e2f6eee8fdf8bab5ab2eeda846c2656b37ef3d7474748b7f4b6260360e82f9577657df9370f8d13df7dff5858dabc75d73bff7f6b56f5bb8bc29ef14aabe54d1b27445fdd96ecf83fd233f038ff7d63f52d0d55d7d5fbe0ba5b5c7faaeda53c883b7efaf9d0e1cd9bfb57674742fadbfc6b8a06345edabbededac35ae5d077eb2f0c5cb37c51ed9bfed405aaefcbbcbeabeb9a717f5777762f9ad21b5d6743b0dcbe62dd2347077ff8d89efbbebaf9face93d73c0feed8b8ea92859ff64ea151f5b9a337fc9bb64079fea2f64bab7f3bd7de7877a5726460dfcecd2b3f537b06d97ff5926d3f39baae09cf22cb8baf5bdfbef3f6feea0708aedbb2b23cfa7181cf769ffc09495b2163e3bd6669f5e5816a93b63f59b9f1b97df51706ba570cbf11a8dcd65e7d87c9d652dfe30395f69681fa5b6c972f5b14fe659e68493befded2d394cf2d4c2a526e5dbca4faf7f2356b6fd956fd40f8a1dddb377ff0e6dacfe11d575d7bf9e1be654df8399cb4de666c743690ae7a657fefe68f6de83ef57d99d54bcbed977e64dbe07deb87df8db3af39174c4ba5b776dd585b706f4ff529edd0c8c705baaf6cf0d1e2746932315ab9ada37ec2d47f70e0d0c1ddb5cf818f7b23d0c22bebeddbd97f68a0bffe19c0e55df13dea3593b939577f4eb7e2c17df77c6cc34d9fdeb6676249e596b6259d377eed896fadafdfa9ff48b37e0e4f577313bf270652c61fe8ddb8b5a7f7ebfb862f2e9f327879d99ab5c3df6ad6cbb1e5c5cb3f51aba06fe7ee7dbb7b6fafde5ab6a9ab196f7b1f6688efbfe5b677d75f59dcd9b36d6b2d0526bc11e8f557aca97e6b6f6fcfd7b7d72e09adeeea68561fe383ab55148fc6b1815d5b7b7aeef868ff692f75b62d5f33fc51c152533ea1125ff3c440ba3d29b72dad3ddf3f78f3ca1d87263e11a9cff3f8aeedc3f39d665bba85341cadf5cafa3b28eeb8f68a0fd61ee64ad77bdbfb04abea05e5da4bc1d5c7fadafb4127be11a8b57d69ed25c7bedead3b6a1f147ff752015a6588f1cf796d4bea656df8dcf6f1ef8b1b297568ffeefa9b7d63acbc2935898194d947aeba944a1fbca4f52bb5372c8f3ce057860eefded6bd6af823a99d2b9b783161d1e5236724b595b76f9ef019cb94313239dc6bdaab2f0f8cfc59f6bee5132e1db7b45f73f233765dede33f9e3a7a17ffc620d0ba74c535f53ab6bebfe3033df71f197d9768a572b47fd7b68b566eac6fec1c7ef13f86829b5b831848d9bfbc78cda35fed1e1ef4e3b5372cb7be7a7e4bf5ef850b975c3df23b47bb1eded2c45ffc522ab5768c7eb2a174fd4d974f78984b19639ac335ef54a95670f5659ce14790eaed6b3a4ef984f0fc65a3bf25b0d4b5c2272d461b3cfa5c67f4ebe6ff5b5e7cdb63db86cbd8b9e1dab72c1cfd31bc60e1dbafaabf3c562addf5d8e6263e1b6b3ed1b80ac4c0388c946e2e5a73eb4f1ebbff86ce93cf1bc706befe0bdb7ff854cfecffd6e4b109ab8f6a238ff3e37e217ef9f2b51beb7b745e73f9c2b15de70defd9b4b7f78d15d2ecdf9253fda4d8c8a73eba96bee47162d1f2916dd7573f53365672f36ecc8be0eaf6bcf2f0e7a81bffdf2c9ae1537d42f6cce17d77ae1ff910d9f81296756f7ef847839d8bbdcb6b44c5ff6f60fce191f2edea19e8d0d343c72ad597a9e6cd6b6d59d0323f86078e9417693802910b54aabfefb1fa3f38aabd5a3cafbc60c182f9cd7ea2119d971888ae250a2240804048011785426a9b8b000102d1098881e85aa2200204088414100321b5cd45800081e804c440742d5110010204420a888190dae62240804074026220ba9628880001022105c440486d73112040203a0131105d4b144480008190026220a4b6b9081020109d801888ae250a224080404801311052db5c040810884e400c44d7120511204020a4801808a96d2e02040844272006a26b89820810201052400c84d43617010204a2131003d1b5444104081008292006426a9b8b000102d1098881e85aa2200204088414100321b5cd45800081e804c440742d5110010204420a888190dae62240804074026220ba9628880001022105c440486d73112040203a0131105d4b144480008190026220a4b6b9081020109d801888ae250a224080404801311052db5c040810884e400c44d7120511204020a4801808a96d2e02040844272006a26b89820810201052400c84d43617010204a2131003d1b5444104081008292006426a9b8b000102d1098881e85aa2200204088414100321b5cd45800081e804c440742d5110010204420a888190dae62240804074026220ba9628880001022105c440486d73112040203a0131105d4b14448000819002ff0f2d7f2d973eddd70f0000000049454e44ae426082}\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u36825?\u26159?\u25105?\u30340?\u27599?\u21608?\u24773?\u20917?\u65292?\u26174?\u28982?\u22914?\u26524?\u25226?\u26143?\u26399?\u20845?\u31227?\u21040?\u21069?\u38754?\u30340?\u35805?\u65292?\u38543?\u30528?\u24037?\u20316?\u26102?\u38388?\u30340?\u22686?\u38271?\u65292?\u22312?github\u19978?\u30340?\u20351?\u29992?\u22312?\u19979?\u38477?\u65292?\u20316?\u20026?\u19968?\u20010?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 a fulltime hacker who works best in the evening (around 8 pm).\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u19981?\u36807?\u36825?\u20010?\u26159?osrc\u30340?\u20998?\u26512?\u32467?\u26524?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 python github \u27599?\u21608?\u24773?\u20917?\u20998?\u26512?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u30475?\u19968?\u24352?\u20998?\u26512?\u21518?\u30340?\u32467?\u26524?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 {\pict\pngblip\picw844\pich438\picwgoal12260\pichgoal6360 89504e470d0a1a0a0000000d494844520000034c000001b608060000004c0b06e10000000473424954080808087c086488000000097048597300000f6100000f6101a83fa7690000200049444154789cecdd7b7ccee5ffc0f1d77d6fb323c3866dce739ce3cce6189b4d58ce9a952c7e7228613924f5951c561486282224426939554acc668ac46624c77288368631ec6087fbfafdf16977bbed1e5318dbfbf978ec71bbafebfa5c9febf3b977dbfdbeaf934e29a51042082184104208918fbea81b20841042082184108f2a099884104208218410a2001230092184104208214401246012420821841042880248c0248410420821841005908049082184104208210a2001931042082184104214400226218410420821842880044c420821841042085100099884104208218410a2001230092184104208214401246012420821841042880248c0248410420821841005908049082184104208210a2001931042082184104214400226218410420821842880044c420821841042085100099884104208218410a2001230092184104208214401246012420821841042880248c0248410420821841005908049082184104208210a2001931042082184104214400226218410420821842880044c420821841042085100099884104208218410a2001230092184104208214401246012420821841042880248c0248410420821841005908049082184104208210a2001931042082184104214400226218410420821842880044c420821841042085100099884104208218410a20012300921841042082144012460124208218410428802148b8029353595c99327d3a54b17ca972f8f5eafe7d34f3fcd57eefffeefffd0ebf5f97e3c3c3cccd6bb6cd9323c3c3cb0b5b5a56eddba7cf0c10766cb5dbb768d61c38651a142051c1c1cf0f7f7e7c0810366cbeedebd9b279e78027b7b7b5c5d5d79e59557484d4dfdf7172f84104208218478602c8bba01f7c3a54b97080b0ba37af5ea787a7a121d1d8d4ea7335bd6dada9a65cb9699a4393a3ae62bb778f162860f1f4e505010afbefa2a313131848686929696c66bafbd662c673018e8dab52b870e1de2b5d75ec3c9c989850b17e2e7e7476c6c2cb56bd736968d8f8f27202080860d1b3277ee5cce9d3bc7ecd9b33979f2245bb66cb94f774308218410420871bfe89452aaa81bf15f65666672edda352a56ac486c6c2c3e3e3eac58b1820103069894fbbffffb3fd6af5fcff5ebd7ef585f7a7a3a55ab56a54d9b366cdebcd998fefcf3cfb371e346ce9d3b47d9b2650158b76e1dcf3efb2c111111f4e9d30780cb972f53b76e5d02030359bd7ab5f1f8a79e7a8a43870e71ecd8311c1c1c00ad176be8d0a16cddba95279f7cf2bedc0f218410420821c4fd512c86e4952a558a8a152b0270b7f84f2985c160b863d0141515457272322fbffcb249fa881123484d4de5db6fbf35a6454444e0e2e2620c96009c9d9d090e0e66d3a64d6465650170fdfa75b66fdf4e484888315802183060000e0e0eac5bb7aef0172c84104208218478288ac590bc7b91969646993265484b4ba35cb972f4ebd78ff7de7b0f7b7b7b6399dcf947dedede26c77a7979a1d7eb898f8fa77ffffec6b25e5e5ef9cee3e3e3c392254b3871e2040d1b36e4d75f7f253b3b3b5f9d565656787a7a1638e7e9f2e5cb6cddba951a356a606b6bfb9fae5d0821841042145fe9e9e99c397386ce9d3be3ecec5cd4cd29364a54c0e4e6e6c6840913f0f2f2c26030f0dd77dfb170e1420e1e3c487474341616160024262662616191ef17ad54a952383939919090604c4b4c4cc4cfcf2fdfb95c5d5d01484848a061c3862426269aa4e7e5e2e2c28f3ffe68b6cd5bb76e252424e45f5daf104208218428793efbec33e397fbe2bf2b5101d3f4e9d34d9e07070753b76e5d264e9c48444404cf3cf30ca045e7a54a95325b87b5b535e9e9e9c6e7191919585b5be72b67636363ac2bef634165f3d69957cd9a3501ed17bfa0d5fcc4a367f4e8d1cc9b37afa89b21ee81bc668f1f79cd1e3ff29a3d7ee4357bbc1c3d7a94909010e3e747717f94a880c99c3163c63069d2242223238d0193adad2d99999966cb676464980c8db3b5b5e5d6ad5b66cbe5e6e77d2ca8ac9d9d9dd9f3e5065e1e1e1e6687fe894753d9b265e5f57accc86bf6f891d7ecf123afd9e3475eb3c753eee747717f148b451ffe0b1b1b1bca972f4f7272b231cdd5d5959c9c1c2e5fbe6c5236333393e4e464dcdcdc4ccae61da2972b77085e6ed9dca178b9e9b797cd5ba7104208218410e2d150e203a61b376e70f9f2652a54a8604c6bd6ac1900fbf6ed3329bb7fff7e0c06039e9e9ec6344f4f4fe2e2e2f2adceb777ef5eecededa95bb72e008d1a35c2d2d2325f9d999999c4c7c79bd4298410420821847834949880e9d6ad5bdcb871235f7a585818005dba7431a6f9fbfb53be7c79162d5a645276d1a245d8dbdbd3b56b57635a505010172f5e64fdfaf5c6b4cb972ff3e5975fd2bd7b77acacac006d73dc8e1d3bf2d9679f71f3e64d63d955ab56919a9a4adfbe7defcf850a218410420821ee9b623387e9830f3ee0dab56bc6e1719b376fe6cf3fff0420343494e4e4649a356bc673cf3d47bd7af5006d05baefbefb8ec0c0407af6ec69accbc6c686b0b030468c18417070309d3a7562d7ae5dac5ebd9ae9d3a71b37ad052d606ad5aa1583060de2c89123383939b170e14294524c9d3ad5a48defbcf30e6ddab4c1d7d797a1438772fefc79e6cc9943e7ce9de9d4a9d383be45e221ead7af5f513741dc2379cd1e3ff29a3d7ee4357bfcc86b2604e8d4dd767a7d4cd4ac5993b367cf02a0d3e9006d935a9d4ec7e9d3a771747464d4a851fcfcf3cf242424909393439d3a75e8dfbf3fafbefaaa7149f1bc962e5d4a787838a74f9fa65ab56a8c1c3992d0d0d07ce5ae5dbbc6f8f1e3d9b87123e9e9e9b468d182d9b3679b9d24f9d34f3f3161c204e2e2e22853a60cc1c1c1cc9831c3641fa8bce2e2e268debc39b1b1b132e952082184104214483e373e18c526602aaee4175f082184104214867c6e7c308acd903c218410423c9e4e9e3c69769eb110e21fa54b97a64e9d3a45dd8c1249022621841042149993274f1a57941542dcd989132724682a02123009218410a2c8e4f62c7df6d96778787814716b8478341d3d7a94909010e9892d22123009218410a2c8797878c89c0b21c423a9c4ecc32484104208218410f74a0226218410420821842880044c420821841042085100099884104208218410a2001230092184104208214401246012420821841042880248c02484104208f188983f7f3e0d1a34c0d6d616bd5ecffcf9f301d0ebf574e8d0a1885bf7785ab162057abd9e4f3ffdb4a89b221e53b20f9310420821c423e0f3cf3f67f4e8d17879793176ec58acadad69d5aa95315fa7d33db073fbf9f911131383c1607860e7286a0ff2fe89e24d0226218410428847c037df7c637c74717131c93b76ec187676760ff4fc125008619e044c42082184108f80848404743a5dbe6009a06eddba45d0222104c81c262184104288223565ca14f47a3dd1d1d128a5d0ebf5c69f5ce6e630e51eb773e74ed6ac5943cb962d717070a066cd9ac6329b376f262020005757576c6c6ca85cb9327e7e7e2c5ab408803367cea0d7eb898989c977eebbcd995abc78317abd9ea54b979aa47ff2c927e8f57aecededc9cccc34c96bd9b225b6b6b6dcba75cb247defdebd040505e1e2e282b5b535d5aa55e3a5975e223131d1ecb993939379e38d37f0f0f0c0cece8eb265cbd2b16347b66ddb76c736e775f5ea55dab76f8f858505efbdf75ea18f13258ff430092184104214a10e1d3aa0d3e958b1620567cf9e65ca942966cb1534642e3c3c9c6ddbb6d1a3470f0202024849490160c99225bcf4d24bb8babad2b3674f9c9d9d494a4ae2e0c183ac58b182e1c38753ae5c39264f9e6cf6dc356ad4b863bb3b76ec084064642443860c31a647464602909191c19e3d7bf0f5f50520252585d8d8587c7d7db1b6b636965fbe7c39c3860dc3d6d6961e3d7a50b56a554e9c38c1d2a54bf9faebaff9f9e79fa95ab5aab1fcd9b367f1f3f3e3ecd9b3b46fdf9ea79e7a8a9b376ff2cd37dfd0a54b17162f5e6cd21e73fefcf34fba74e9c2a953a758b56a15cf3df7dc1dcb8b924d0226218410423c76d2d2e0d8b1877fdefaf5e17e4f25f2f5f5c5d7d797a8a828fefcf34fde7aebad7b3a3e2a2a8a9f7ffe99a64d9b9aa42f5ebc186b6b6b0e1e3c88b3b3b3495e727232008e8e8e4c9e3cf95f9dbb56ad5a54ad5a951d3b7698a4efd8b1037f7f7fa2a3a3898c8c34064cd1d1d1180c06fcfdfd8d654f9c38c14b2fbd84bbbb3b3b77eec4d5d5d5a49e4e9d3af1ca2bafb07efd7a63fac081033977ee1c9f7ffe39c1c1c1c6f4949414fcfcfc080d0da5478f1e54ac58d16cbb0f1e3c48606020e9e9e96cd9b2c5a43d4298230193104208211e3bc78e41f3e60fffbcb1b1e0e5f5f0cf7b27c3860dcb172ce5b2b0b0c0d232ffc7bdf2e5cbdf9773070404b062c50a7efdf5571a376ecc912347b870e10293274fe6faf5eb444646326dda34e09f9ea7808000e3f18b162d223b3b9bf7df7fdf245802f0f7f7a77bf7ee7cfdf5d7a4a6a6626f6fcfc18307898989a16fdfbe26c11268c1df942953e8ddbb375f7df515c3870f37c9574ab16ddb369e7efa691c1d1d898989a171e3c6f7e53e88e24d0226218410423c76ead7d78297a238efa3a6458b1666d343424218376e1c0d1a34e0d9679fa57dfbf6b46ddb960a152adcb773fbfbfbb362c50a22232369dcb8b1b1b72920208053a74e3177ee5c63b0b363c70e4a972e6dd2de3d7bf6005aefd3debd7bf3d59f9494444e4e0e274e9ca059b366c6f2d7ae5d333b74f1d2a54b001c3d7a345f5e4444045bb76ea55ebd7a7cf7dd7754a952e53f5fbf2819246012420821c463c7ceeed1ebe9292ae656d5031833660ccecece2c5cb890f9f3e7336fde3c743a1dbebebecc9a358be6f7a18b2eb7b768c78e1d8c1e3d9ac8c848aa56ad4aeddab509080860d6ac59ecdcb9132f2f2f8e1c3942d7ae5d4d16b3b872e50a00b366cd2af01c3a9d8e9b376f9a94dfb66d5b810b3ce8743a525353f3a5efd9b387ecec6c5ab46821c192b827123009218410423cc6eeb47fd2f3cf3fcff3cf3f4f4a4a0abb77ef66c3860d2c5fbe9cce9d3b73ecd8b17c739bee95abab2b75ebd625262686cccc4ca2a3a3e9ddbb37004f3cf104a54a9562dbb66d5cbb760d20df7c21474747743a1d292929383838dcf57c8e8e8e00cc9f3f9f912347de535b67cc98c1b7df7ecb279f7c82528a65cb96c9de53a250645971218410428862ced1d191c0c040962c59c2fffddfff919c9c4c4c4c8c31dfc2c202d0e6f9dcab8e1d3b72fdfa75162e5c484a4a8ab1d7c9cece8e56ad5a1119196932542fafd6ad5ba3943269cb9db46edd1aa0d0e5f3b2b6b626222282be7dfbb262c50a424242c8c9c9b9e77a44c92301931042082144311415156536fde2c58b00d8dbdb1bd39c9c9c504a71f6ecd97b3e4f6eafd1bbefbe8b4ea733098afcfdfd397cf8305f7ffd35cecece3469d2c4e4d8912347626565c59831633879f264beba333333d9b56b97f179f3e6cd69d7ae1debd7afe7934f3e31db9e5f7ffdd53897e976969696ac5dbb96909010d6ae5dcb33cf3c437676f63d5fb3285964489e10420821c423e2dff4f014a477efde942e5d9a56ad5a51bd7a759452ecdab58bfdfbf7e3eded6ddc4709b45ea2888808faf4e943606020b6b6b6d4a85183909090bb9e27771fa9a4a4243c3c3c4ce6540504043065ca142e5dba44dfbe7df31d5baf5e3d962f5fce0b2fbc40c3860de9d2a50b75ead4212b2b8b3ffffc935dbb7651a952258e1c39623c66cd9a35f8fbfb3378f060e6cf9f4f8b162d285bb62ce7cf9fe7d0a143fcf6db6ffcfcf3cf052e6ea1d7ebf9f4d34fb1b1b161e9d2a5f4e9d3878888084a952a752fb7579420123009218410423c02743add3dcda9b95bf9f7de7b8fad5bb7121717c7962d5bb0b1b1a1468d1acc9c3993e1c3871b87e1010c193284b367cff2f9e79f336bd62cb2b3b3f1f3f32b54c054ae5c399a356bc6810307f2cd516ad9b225f6f6f6a4a5a515b8df51fffefd69dab429e1e1e1444545f1c30f3fe0e0e0809b9b1bc1c1c13cf3cc3326e52b57ae4c6c6c2c0b162ce0abafbe62cd9a35e4e4e4e0eaea4a83060d78e5955768d4a8d11def934ea763c99225d8d8d8f0c1071fd0b3674f366cd8808d8dcd5daf579440aa18b879f3a67aebadb754e7ce9d55b972e5944ea7532b56acb8e331999999cac3c343e9743a357bf66cb365962e5daaead7afaf6c6c6c549d3a75d482050bcc96bb7af5aa1a3a74a872767656f6f6f6aa43870e2a2e2ece6cd99f7efa49b56ddb56d9d9d929171717151a1aaa6edebc59603b63636315a0626363ef783d420821c4e348fece097177857d9fc8fbe9c1281673982e5dba44585818c78f1fc7d3d313b8f38a31000b162ce0dcb97305965dbc783143870ea571e3c67cf0c107b46edd9ad0d05066ce9c6952ce6030d0b56b57d6ae5d6bcc4f4a4ac2cfcf8fdf7fffdda46c7c7c3c0101016464643077ee5c860c19c292254bcc76510b2184104208218a5eb11892e7e6e6c6850b17a858b122b1b1b1f8f8f8dcb17c525212616161bcfefaeb4c9a34295f7e7a7a3a13274ea45bb76eac5bb70e80c18307633018080b0b63d8b061942d5b16d03641dbb3678f71dc2f4070703075ebd665f2e4c9ac5ebdda58effffef73f9c9c9c888e8e362e9d59a3460d860e1dcab66ddb78f2c927efcbfd10420821841042dc1fc5a287a954a95254ac581128dc64c9d75f7f9dfaf5ebd3bf7f7fb3f9515151242727f3f2cb2f9ba48f183182d4d454befdf65b635a4444042e2e2ec66009c0d9d999e0e060366dda4456561600d7af5f67fbf6ed84848498ec333060c0001c1c1c8c8199104208218410e2d1512c02a67bf1cb2fbfb072e54ae6cd9b57609903070e00e0eded6d92eee5e5855eaf273e3edea4ac9799adc67d7c7c484b4be3c4891380b6c465767676be3aadacacf0f4f4349e53082184104208f1e8281643f20a4b29c5a851a378f6d96769d9b22567ce9c315b2e3131110b0b8b7cbb5f972a550a2727271212124ccafaf9f9e5abc3d5d515808484041a366c486262a2497a5e2e2e2efcf8e38f776cfbe8d1a38dc30073f5ebd78f7efdfaddf138218428369482df7f875f7ef9e7c7d111de7a0bdab429ead60921c443b576ed5ad6ae5d6b9276eddab5226a4df156a202a6152b5670f8f061d6af5f7fc772e9e9e905aec56f6d6d4d7a7abaf179464606d6d6d6f9cae52e4b995b36f7b1a0b279eb3467debc79667bb28410a2d8ba7409f6ed83bd7bff09909293b5bcdab5a1450b387c18dab685a79e82b7df8666cd8ab6cd4208f19098fbe23c2e2e8ee6cd9b17518b8aaf1213305dbf7e9d37de7883d75e7b8dca952bdfb1acadad2d99999966f3323232b0b5b535297bebd62db3e572f3f33e1654d6ceceae7017228410c5517a3a1c38a00545b901d2a9535a9eb3b3161cbdf28af6d8a205942fafe5190cf0e5975a2f9397170405c1b469e0e15174d7228410a258293101d3ecd9b3c9caca223838d83814effcf9f30024272773e6cc192a57ae8c959515aeaeaee4e4e470f9f265936179999999242727e3e6e6664c7375753519a2972b77085e6ed9dca178b9e9b797cd5ba71042146b06031c3ffe4f60b4772f1c3a04d9d96063a3053e3d7a40cb965a7054b32614b455845e0fcf3c034f3f0dab56c1d4a9d0a8118484c0e4c9e0eefe70af4d082144b15362167d3877ee1c57af5ea561c386b8bbbbe3eeee4efbf6ed01983e7d3aeeeeee1c3d7a14c0b897d3be7dfb4cead8bf7f3f0683c1989f5b362e2e2edfea7c7bf7eec5dede9eba75eb02d0a851232c2d2df3d5999999497c7cbc499d420851ac2426c2a64df0bfff41c78e50ae1c3468002fbc00d1d1d0a409cc9f0fb1b170fd3afcf413cc9d0bcf3eab053c77d9570f004b4b1834480bc4e6cf871f7e807af5e0a597e0ef2fc7841042887fa3c4f430858686d2bb776f93b48b172ff2e28b2f3268d0207af6ec498d1a3500080808a07cf9f22c5ab488c0c04063f9458b16616f6f4fd7ae5d8d69414141444444b07efd7a9e7efa69002e5fbecc975f7e49f7eeddb1b2b202c0d1d1918e1d3bf2d9679f3169d224e3d2e2ab56ad2235355536af1542140f376f6a814fdea1757f6f128e8b8bd66bf4faeb5acf91b7b7b668c3fd646d0d234668c1d3871fc2bbefc28a15f0f2cbda79ffde824208218428ac6213307df0c1075cbb76cd383c6ef3e6cdfcf9e79f80162c356bd68c66b74d06ce1d9ad7b061437af4e8614cb7b1b1212c2c8c112346101c1c4ca74e9dd8b56b17ab57af66faf4e926abd5050505d1aa552b060d1ac491234770727262e1c28528a5983a75aac9f9de79e71ddab46983afaf2f43870ee5fcf9f3cc993387ce9d3bd3a953a707715b8410e2c1c9c981df7e330d8e0e1fd686dcd9d96901d1b3cffe33b4ae4a95c2f516dd0f7676307e3cbcf8a2d65b151e0e4b96c0e8d1f0eaab70dbaaa342082144418a4dc0141e1eced9b36701d0e9746cd8b081f5ebd7a3d3e91830600065ca94b9a7fa860f1f8e959515e1e1e16cdebc996ad5aa316fde3c4243434dcae9f57ab66cd9c2f8f1e3993f7f3ee9e9e9b468d182952b5752a74e1d93b2cd9a3563fbf6ed4c983081b163c752a64c19860c19c28c1933fedbc50b21c483a69436b42defbca3d858484dd5e611356aa40545a346698f0d1a68c3e48a5a9932da5ca6912361e64c983347eb791a3f1e424321cf46e242082184393a75fbe41bf148c95d1e32363656961517423c3c2929b07fbf698074e1829657b5ea3fbd462d5b6a8b343c2e81c7850b307d3a2c5eac0d077ce30d183e5c5b6c421409f93b27c4dd15f67d22efa707e311f8fa4f08214491cacad256a9cb3bb4eed831ad57a94c19f0f1d11668c85dd2dbcc06dc8f0d17176d518871e3202c4ceb690a0f874993b46bfc7bdea9b87f0ccac095b42b5cb879818ba91749cb4ac3c9d609673b679ced9c3128435137513c42ce9c3983bbbb3b03070ee4934f3e29eae6dc17c5f19a4a1a09988410a224510a4e9ffe2738dabb57dbff2823431b42d7b429f8f9c184095a7054af9e36e4aeb8a95e1d962e85d75e832953b45ea69933b57f3ff71c585814750b1f694a29526ea570e1e6052d10ba7951fb77ea6dcf6f5e202935891c9553605dbac48734af4d3c56740f6bbee343541cafa9a490804908218ab3e4642d38cadb7b74f9b296e7eeae0545c1c1dad03a4f4fc8b331778950b72eac59a30dcd9b3409060cd056d69b360dfaf479788b543c226e66de340976727b85ccfd3b33c77483771b4b1b5c1c5c707170a1927d255a546e61fcb731dda11276567624a7277339ed3297d32e131717c73b8bdf29a22b164288bb93804908218a8b5bb7203ede74ded1efbf6b79e5cb6bc1d1cb2f6bc1918f0f54a850b4ed7d94346e0c1b376af7edcd372128489b9bf5f6dbd0a5cb631d386564671883a082829fdcfcd4ac5493632df59626014fa38a8de8e8de1117fb7f02a0dcbcd2a54a17fa1b74170717e3bf6ba4d7e01d246012423cba2460124288c791c1a00543b9c3ea7ef9450b96b2b2a0542968d60c9e7aea9f85196ad57aac3ff43f342d5a689bdeeedc0913276af7b06d5b78e71df0f52dead61965e5647129ed92d92171797b882ea65ee45ac635936375e8a8685fd118f0d42e5f9b27aa3d61da13f4f7bfcbd99643af2b8643321f519b376fe6fdf7dfe7c891235cbd7a15272727ead4a9c333cf3cc3f0e1c34dca262727336bd62c366edcc8d9b3672955aa14dedede4c983081279f7cd26cfd5f7cf1054b962ce1c08103a4a7a7e3e2e242ebd6ad19376e1ccd9b373796bb75eb1673e7ce65f5ead59c3a750a4b4b4b9a366dcaa851a3f2ed1b99777ecee4c99379fdf5d7d9be7d3ba9a9a9346ad4882953a698ec5f99ebc68d1b4c9e3c9975ebd671e5ca156ad4a8c1b061c3e8d9b367a1efd7f1e3c7f1f0f0e0b9e79ee3b3cf3e33a69f3e7d9a5ab56a01101313c3134f3c61cc9b306102b366cd62c78e1df8f9f919d3cf9f3fcfbbefbecb962d5b484848c0c1c181b66ddb3269d224bcbdbdf39d3b3b3b9b254b96b072e54a8e1c39424e4e0ef5ead563f0e0c1bcfcf2cb85faf2c060303066cc18162c58409f3e7df8ecb3cfb09105681e4912300921c4e32029c97458dd2fbfc0b5bf3f08d7aba77dd01f38507b6cda540b9ac4bfe7eb0bbb76c1f7df6b3d4e7e7ef0e4935a8f538b160fe4940665e072dae57c018fb97f5f4ebb9ceff8f2b6e58d018f5b6937bc5cbdcc0e8973b673c6522f7ffe1f354b962ce1a5975ec2d5d5959e3d7be2ecec4c525212070f1e64c58a152601d3d9b367f1f3f3e3ecd9b3b46fdf9ea79e7a8a9b376ff2cd37dfd0a54b17162f5ecc9021438ce595520c1a3488952b5752a14205828282a850a102e7ce9d233a3a9afaf5eb1b03a6cccc4c3a77ee4c4c4c0c1e1e1e8c1c3992d4d45422222278e69967888f8fe79d77f2f7089e3d7b96962d5b52ab562d060e1cc8952b57f8e28b2fe8d9b327dbb76f37094e6eddba45404000fbf7efc7d3d393e79f7f9eab57af12161646747474a1ef59bd7af5a85cb93251515126e9919191803667283232d224608a8c8cc4d6d696366dda18d3e2e2e2e8d4a91357af5ea54b972e04050571e9d225366edcc8134f3cc1860d1b080c0c3496cfcacaa27bf7eefcf0c30fd4af5f9f9090106c6c6cd8b16307a3468d62efdebdac5cb9f28e6dcfc8c8a07ffffe6cd8b081912347327ffefc425fb778f8e47f4c218478d4a4a5415c9c6980f4f746db54aca8f5188d1ba73d7a7b43b97245dadc624ba783c0406d48defaf5f0d65bda3defd9539be3d4a4c95dab504a712de35aa186c3995b1ca18c75199380c7c3d9235f00e4e2e04245fb8a94b2285941725a561ac72e1f7be8e7adef5c1f3b2bbbfb5eefe2c58bb1b6b6e6e0c183383b3b9be42527279b3c1f387020e7ce9de3f3cf3f273838d8989e9292829f9f1fa1a1a1f4e8d1838a152b02f0f1c71fb372e54a5ab468c1b66ddb285dbab4f11883c140525292f1797878383131313cf5d4536cdebc19fddf8bbe4c9e3c99162d5a3063c60cba75eb46ebd6ad4dda141d1dcdd4a9539934699231edb9e79ea34b972ecc9a35cb24600a0f0f67fffefd3cfdf4d37cf9e597c6f4d75f7fdda4a7ab30fcfdfd59b56a15478e1ca1418306801614393b3b53a54a15222323993c79320057af5ee5c08103f8fbfb53eaef2f95b2b3b3090e0e262d2d8de8e868dab56b67ac7bfaf4e9f8f8f83078f060ce9c39633ce69d77dee1871f7e60d4a851cc9b37cfd89b64301818366c18cb972f272828881e3d7a986d737272323d7af460cf9e3dbcf7de7b8c1f3ffe9eae593c7c123009214451cac9d196f0ce3befe8d75fb5745b5b68de5c5b7ca0654beda75a35195af7b0e974f0f4d3d0ab17ac5d0b9327a33c3db9d9c80240530000200049444154bb2bc7473dc7d98aa5cc0e87cb0d8c6e5f1cc1d6d2d624e06959a5252ef6a6f3812ad957322e9020cc3b76f918cd97dcdb87ebfb2176582c5eae0f667f1b0b0b0b2ccd6cf85cbe7c79e3bf0f1e3c484c4c0c7dfbf6350996001c1d1d9932650abd7bf7e6abafbe32f64a2d58b0009d4ec7e2c58b4d822500bd5e8f8bcb3f73ca962f5f8e5eaf67ce9c39c66009a042850a4c9a3489214386b074e9d27c01538d1a3578f3cd374dd23a75ea44d5aa55d9b76f9f49fa279f7c828585053367cecc574768682853a74e2df01edd2e20208055ab56111919690c9876ecd84140400055ab56e5fdf7df273d3d1d5b5b5ba2a2a2504a111010603cfedb6fbfe5d4a9538c1f3fde24580270757565fcf8f18c193386c8c84802030331180c2c58b000575757e6ce9d6b32f44eafd7337bf66c3ef9e41356af5e6d36603a7bf62c5dba74e1f4e9d37cf6d967f4ebd7afd0d72a8a8e044c4208f130fdf59769cfd1fefd70e386f6a1bc41032d287ae925edb16143d917e821cabb38c2edbd40799f5ffebf449ed9a798b4fd1b3c377ec3c1a630b78325b7aab818039e26959ad0a956a77c73825c1c5c7028e520cb0bdf07f59deb133b2cb648cefb20848484306edc381a3468c0b3cf3e4bfbf6ed69dbb62d156e5b9c65cf9e3d005cbb768d2953a6e4abe7d2a54b001c3d7a1480d4d4547efbed375c5c5c68dab4e91ddb70e3c60dfef8e30faa54a942ddba75f3e5fbfbfb03101f1f9f2fcfd3d3d3ecef75d5aa55d9bb776fbe7354ab568d9a356be62bef7b8f730573db141919c9a851a3387cf830972e5d222020802a55aa307bf66c626262e8dcb9333b76ec303906feb99f67ce9c317b3f4f9e3c0968f73330309013274e70f5ea55ead4a9c3b469d3ccb6c9c6c6c678fff33a76ec18ad5bb7263d3d9defbefb8e0e1d3adcd3b58aa223019310423c28376e406cac69efd15f7f6979952b6b7361264ed41ebdbde1b66f7ec57f97959345526a5281c14fde217129b7524c8ed5ebf454b4af680c76ea94af43bb6aedb4e7bd5c3865551eab882806cd5fc60b1f5c4737ac97f67ae6f9b65e3c387656760faca7a7288c193306676767162e5cc8fcf9f38d43bd7c7d7d99356b9671a8da952b5700d8b66d1bdbb66d335b974ea72335555bf1f0dadf731d2b57ae7cd736a4a468ef01d70236a7ceed89caad33afb265cb9a3dc6d2d21283e19fcd8973cf51a952a53b9ea3b0aa54a942eddab5898989c1603018e72f05040450b16245acacac888c8ca473e7ce444646e2e8e8888f8f8ff1f8dcfb997768e0edf2decfdcf2274f9e2c3060ca5b3eaf13274e909c9c8ca7a727cd9a35bba7eb14454b02262184b81fb2b3e1f061d3dea3df7ed3368a7570d096f10e09d17a8e5ab4d00226f1af29a5389b729693574efe1308995921cedce2084eb64ec6de9e2a65aae0ede66d76489cb39d3316fabb6c60fb666718fd262c58a06d7cbb6c198c1aa56d88ebe4f480ae5e1457cf3fff3ccf3fff3c292929ecdebd9b0d1b36b07cf9723a77eeccb163c7707676c6d1d11180f9f3e73372e4c8bbd6991bc8fc95fb65cd1de4d67de1c205b3f989898926e5fe8ddc632f5ebc6836bfa073df89bfbf3f4b962c61dfbe7d44464652a3460d63ef55eebcadc4c4448e1f3f4ef7eedd4d7ac272dbb379f366ba75eb56e8f6f7e9d3878888887b6a678f1e3da85bb72efffbdfff08080860dbb66d26c32dc5a34b02262184b8574ac19f7f9af61cc5c6427a3a5858687bfab46d0b63c6680152fdfa5abaf8579452fc75e32ff627ec37f9b9927ec558c6d1dad124e06950a181d9e17015ed2b6265719f87393a38681bdf0e1f0ee1e130772e2c5a0463c76a3f65cadcdff38962cfd1d191c0c040e39c99e5cb97b36bd72e7af7ee6d9c3b14131353a880c9dede9e468d1a71f8f061e2e3e3f1f4f42cb06ce9d2a5a955ab16a74e9de2f7df7fa776edda26f9b9abd17979fdfb9ebdd2a54b53bb766d4e9d3ac5a953a770777737c9bf9755f27275ecd891254b96b075eb5676edda45505090312f202080b0b0303efffc73e3f3bcf2decfc2044c1e1e1e942d5b963d7bf6909d9d6d76ced99dbcfefaebd8dada3266cc18fcfcfcd8be7dbb71710ef10853e291161b1bab00151b1b5bd44d11a2e4ba7a55a91f7e502a2c4ca9eedd95aa5449292d6c52aa7a75a58283959a3d5ba95dbb944a4d2dead63ef62edcb8a0be39fe8d9a123545755bd34db9cc76514c41310555695625d56d4d3735357aaafaf6c4b7ea54f22995969956d44d369594a4d4d8b14a595b2b55bebc52efbd27bf1777207fe7343b76ec309bdead5b37a5d3e9d4f7df7f6f4c6bdfbebdb2b0b050cb972f377bcca1438754525292f1f9c71f7fac743a9d6ad1a2854a494931299b9393a31213138dcfa74f9fae743a9dead5ab97cac9c931a65fba7449d5a85143e9f57af5d34f3f19d34f9f3ead743a9d1a346890d9b6f8fafa2abd5e6f92967b8ea0a0206530188ce9a74e9d52e5ca95bb637de65cbe7c59e9f57a55a95225a5d3e9d4dab56b8d793b77ee543a9dce98f7ebafbf9a1c9b9595a56ad7aeadecececd4962d5bccd6bf7bf76e9596f6cfff336fbdf596d2e9746af8f0e12a3d3d3d5ff984840475e4c811e37373f7e8a38f3e527abd5ed5af5f5f252424dcf51a0bfb3e91f7d383213d4c4208915766261c3c683ab4eef8712dcfd1511b4e3774a8f6d8a20514300e5f144e727a32b109b1ec4bd867ec393a77fd1ca00d9df376f36670b3c1f8b8f9e0ede68d5b69b7477fc1840a15b49ea6b163b57d9b264ed47a9d264ed47e77acad8bba85e211d4bb776f4a972e4dab56ada85ebd3a4a2976eddac5fefdfbf1f6f6a663c78ec6b26bd6acc1dfdf9fc18307337ffe7c5ab46841d9b265397ffe3c870e1de2b7df7ee3e79f7f362e183164c81076eddac5aa55aba853a70e3d7af4a042850a242424101515c5e0c18379ebadb70078f5d557f9eebbefd8b469134d9b3625303090b4b434befcf24b2e5fbecc6bafbd66b287516128a54c9e8f1b378e8d1b37f2d5575fe1e5e545a74e9db876ed1a5f7ef925eddbb767f3e6cdf754bf9393134d9a34e1e0c183e8743a93451d5ab76e8dadad2d49494954ac5891468d1a991c6b6969c9faf5ebe9dcb9335dbb76a54d9b36346dda143b3b3bce9d3bc7be7dfb387dfa34172e5cc0d6d6168049932671f0e0413efae823befefa6b3a74e840e5ca95494a4ae2e4c993ecdebd9be9d3a7e3e1e151609b5f7cf1456c6c6c183c7830eddbb767c78e1d54ad5af59eae5b3c44451db1893b936f0a84784856ac50aa552bad570094b2b252cac747a91123945ab952a963c794caf36dabb8772919292aea74949af5d32c15fc65b0727fdfddd87354664619e5ffa9bf7a6ddb6b6adde175eaf4d5d326df3c3fd6fef843a9010394d2eb95aa564da965cb94caca2aea563d32e4ef9ce6a38f3e52bd7bf756eeeeeecacece4e952f5f5e797979a959b366a99b376fe62b7fe3c60d357dfa74d5bc7973e5e0e0a06c6d6d95bbbbbbead6ad9bfaf8e38f55aa995ecdd5ab572b5f5f5fe5e8e8a86c6c6c94bbbbbb0a090951070e1c3029979191a1a64f9fae1a356aa46c6d6d5599326554bb76edd4e79f7f9eafcebbf530f9f9f9e5eb61524aa9ebd7afabb163c7aaca952b2b1b1b1be5e1e1a1e6cc99a34e9d3a75cf3d4c4a29356edc38a5d3e954a3468df2e575eedc59e9f57af5ecb3cf16787c5252927afdf5d755a3468d949d9d9d7270705075ebd6557dfbf655ab57af56d9d9d9f98e59b56a950a080850e5cb9757a54a955255aa5451eddab5533366cc50e7cf9f3796bbd33d5abb76adb2b2b252356bd654a74f9f2eb07dd2c354b4744add16f68b474a5c5c1ccd9b37273636f63f8d191642dcc1c58b50bdba36efa8674f6dde51d3a6606353d42d7b6ca566a6127f219efd09fb8dbd47c7af683d75f656f678b97ae1ede66dfca95dbe367a9dfe2eb53ee68e1ed536bf8d8880ba7561ea54080e067d31bfeebb90bf7342dc5d61df27f27e7a3064489e10422c58009696da07d972e58aba358f9d8cec0c0e5d3c641c52b72f611f472e1dc1a00c585b58d3ccb5194fd67a92379e78036f376fea3bd7bffbea73c59187077cf9251c38006fbe09fdfac18c19101606ddbbcb86c44208f1889280490851b2ddb8011f7e08c38649b054085939591c4e3aac0547895a80f4ebc55fc9326461a9b7a449a526b4adda96575abe82b79b370d2b34bcffabd23dee9a35836fbf85ddbbb5794d3d7b6af3e1de790702022470124288478c044c4288926de952b879535b025c98c831e470f4f25193a5bce32fc4732be7167a9d9e86151ae253d98721cd86e0ede64de34a8db1b194618c85d6a60decd8a1fd4c9c084f3e09bebe5ae0d4b66d51b74e0821c4df24601242945c595930670e3cf71c94f0d5890ccac0efc9bfb3efaf7dc69ea3b8c438d2b2d2d0a1a39e733dbcddbc79aef17378bb79e3e9e2899d955d5137fbf1a7d369bd4afefef0cd37da50bd279e80c0406d853d9983208410454e02262144c9f5f9e770fe3cbcfa6a51b7e4a1524a71e6da19930519621363b97eeb3a00b5cad5c2dbcd9b9ef57ae2e3e64333d76694b196cd571f289d4e9bc7d4b5ab36cfe9adb7a0797378fa6998360d1a3428ea160a21448925019310a264520a66ce84a79e82c68d8bba350f8c528abf6efc65121ced4fd84f727a3200d51cabe1ede6cdeb6d5fc7dbcd9be66ecd296f5bbe885b5d82e9f5f0cc335aa0b46a95b6925ee3c6d0bf3f4c9902eeee45dd422184287124601242944cdf7f0f870fc3071f14754beeab8b372f9aac56b73f613f17532f02e0e2e0828f9b8f7141066f376f2ada572ce2160bb32c2d61d0206db8e8d2a5daf0bcb56b61f0606dd85e952a45dd422184283124601242944c33676a2b93b56f5fd42df9d7aea45d213631d624403a7ffd3c004eb64ef854f66168f3a178bb6ac1915b693774b202dbe3c5da1a468cd082a70f3f8477df85152be0e597e1f5d7a1a204bc4208f1a049c0248428797ef905a2a3b57d971e930022252385b8c438e372defbfedac7e96ba70170b476c4dbcd9bfe8dfb1b7b8eaa3b5697e0a838b1b383f1e3e1c51761ee5c080f87254b60f4686d0e5ed9b245dd42218428b68ac5f6e2a9a9a94c9e3c992e5dba50be7c79f47a3d9f7efa69be721f7ffc31bebebeb8b8b860636343f5ead5e9d7af1f478e1c315befb265cbf0f0f0c0d6d696ba75ebf241014377ae5dbbc6b061c3a850a1020e0e0ef8fbfb73e0c001b36577efdecd134f3c81bdbd3daeaeaebcf2ca2ba4a6a6fefb8b1742dcbb59b3a0766de8d5aba85b62566a662a3ffef923f37e9e47c8fa10ea7f509fb2ef95c57fa53f53774e25f14622bdeaf7624d9f359c187982e409c96c1fb09d773bbe4b5083206a94ad21c1527155a60c4c9e0ca74f6b3d4f73e640cd9ada52e4376f1675eb8410a2582a163d4c972e5d222c2c8cead5abe3e9e9497474b4d90f0bf1f1f1d4aa558b5ebd7a51ae5c394e9d3ac5c71f7fcc37df7c436c6c2c75ebd635965dbc7831c3870f27282888575f7d95989818424343494b4be3b5d75e339633180c74edda9543870ef1da6bafe1e4e4c4c2850bf1f3f323363696dab56b9b9c3f202080860d1b3277ee5cce9d3bc7ecd9b33979f2245bb66c79b0374908a1f9fd77f8ea2b58b4082c2c8aba3564646770e8e22193e5bc8f5c3a824119b0b1b4c1d3c593276b3dc9ffdafd0f6f376fea39d5c3425ff4ed1645ccc909de7b4fdb3f6cfa746d25bdf7df8737de80e1c3c146f6c3124288fba558044c6e6e6e5cb870818a152b121b1b8b8f8f8fd9721f7ef861beb45ebd7ae1ededcdead5ab993a752a00e9e9e94c9c38916eddbab16edd3a00060f1e8cc160202c2c8c61c38651f6efe10f111111ecd9b387888808faf4e9034070703075ebd665f2e4c9ac5ebdda78aefffdef7f383939111d1d8d83830300356ad460e8d0a16cdbb68d279f7cf2fedd14218479b36743850a3060c0433f75564e1687930e9bac56f76bd2af641bb2b1d25bd1a45213da566dcb2b2d5fc1c7cd8706151a606561f5d0db291e232e2e307f3e8c1b076161dab0bdf0709834095e7801ace4f7470821feab621130952a558a8a7f4f7c554addd3b1d5ab5707c02acf1f95a8a82892939379f9e5974dca8e183182d5ab57f3edb7dfd2bf7f7f400b985c5c5c8cc11280b3b333c1c1c17cf6d967646565616565c5f5ebd7d9be7d3b63c78e35064b0003060c60cc9831ac5bb74e0226211eb48b17b509f3932681aded033d558e2187a3978f9aac5677f0c2416ee5dcc2426741c38a0df176f366a8d750bcddbc6952a909d696d60fb44da218ab5e5d5b4defb5d7b4e5c7870fd716369932455b69ef11e84d154288c755b198c374afae5cb942525212fbf7ef67d0a04154aa548941830619f373e71f797b7b9b1ce7e5e5855eaf273e3edea4ac97999dd87d7c7c484b4be3c4891300fcfaebaf646767e7abd3caca0a4f4fcf02e73c0921eea3050bb4e59a6ffb32e4bf322803c72f1f67f5a1d58cd93a8627963f419977cbd07851635ed8f40251a7a3a8e7548f994fcee4a7177ee2fa1bd739f8d24196f558c6709fe1f854f6916049dc1f75ebc29a3570f0a0b67fd38001da634404180c45dd3af11f444747a3d7eb8da3610a63ca9429e8f57a76eedc79dfdae1e7e7875e5fbc3e3e16c76b12f757b1e861ba57952b57263333130077777776eedc49e5ca958df9898989585858e0ecec6c725ca952a5707272222121c1a4ac9f9f5fbe73b8baba0290909040c3860d494c4c3449cfcbc5c5851f7ffcf18e6d1e3d7ab4711860ae7efdfad1af5fbf3b1e2784f8dbcd9bdab2ccc38641b972ffba1aa514a7af9d3659ca3b3621961b993700a855ae163e957de85dbf37de6ede34736d4619eb32f7eb2a84289cc68d61e346d8b74fdbb7a96f5f68d64cdbcf2930f0b1591db2243973e60ceeeeee0c1c38904f3ef9a4c072f7b2a08b4ea733fedc4fc5715199c7e59a228e44a073d5d1b85263befce24bd6ae5d6b927feddab5226a59f1562203a6ad5bb7929191c1912347080f0fa753a74efcf8e38f54f97b23c0f4f4744a952a65f6586b6b6bd2d3d38dcf333232b0b6ceffcdb0cddf136e73cbe63e1654366f9de6cc9b37cf6c4f9610a290962ed582a6d1a30b7d88528af3d7cf1b97f2ce0d9292d39301a8e6580d6f376fe3820ccd5d9b53cef6df076342dc773e3eb0752bc4c4c0c489d0b52bb46dab054e66beec134527f703fbfdfce03e72e448faf5eb47d5aa55ef5b9da268cdfc692633fe9881ada52dcddd9ad36a542b5a566e49cbca2da952a60a070e1ca079f3e645ddcc62a744064cbebebe0074eedc999e3d7bd2a85123a64d9bc692254b00b0b5b535f640dd2e232303db3c731f6c6d6db975eb96d972b9f9791f0b2a6b6767f71fae480871475959daf2cbfdfa41b56a0516bb78f3a2c9820cfb13f67331f522002e0e2ef8b8f930bae5682d38726b4e457bd934543c26dab7d782a6ad5bb51ea70e1da063476d39f2162d8aba75827fe660dfeb5cec3b717272c2c9c9e9bed5278a5ecca0180c2e06f69edfcbdebff6b2eeb775ccde3d1b00570757ea67d52fe216164f257ec0a6bbbb3b9e9e9eecddbbd798e6eaea4a4e4e0e972f5f36299b9999497272326e6e6e2665f30ed1cb953b042fb76cee50bcdcf4dbcbe6ad5308719f7df1059c3ba7ad206686528a3e5ff4c125dc85ee6bbbf3e1be0fc951390c6d3e944dcf6ee2afb17f91382e91cdfd3633c977128175022558128f1f9d0eba74d186e97df515242440cb96d0b3271c3a54d4ad2bd1a64c9982bbbb3b009f7efa297abddef8636e5fc9f8f878ba76ed4ad9b265b1b7b7c7cfcf8f3d7bf698ad57afd71313136392aed7ebe9d0a103172f5e64c8902154ae5c194b4b4b93737dfef9e7346fde1c3b3b3b2a55aac4800103cc7edeb993d6ad5b636d6d4d5a5a9a49baafaf2f7abd9e21438698a41f3d7a14bd5ecfc081034dd2b3b3b359b87021ad5ab5a24c9932d8dbdbe3e5e5c5871f7e586080b977ef5e828282707171c1dada9a6ad5aaf1d24b2f99fd1c56901d3b76e0e8e848e5ca9539f488bc476c2c6d78a2da138c6b338e757dd77176f45912c626b0e1990d0cf41cc88d5b378aba89c55289ec61ba5d7a7a3a167956106ad6ac1900fbf6ed233030d098be7fff7e0c06039e9e9ec6344f4f4f76edda8552caa41b7defdebdd8dbdb1bf7766ad4a811969696ecdbb78fa0a02063b9cccc4ce2e3e379f6d9671fd8f50951a229a5ad161618a8cdeb3063e3b18d6c38b681799de7d1ab7e2faa39567b6cc6b30b71cf743ae8d3470b94d6aed536c2f5f484679e81a953b58523c443d5a1430752525278fffdf7f1f4f4a4579e4db5733f93e4dab76f1fefbdf71e6ddab461d8b0619c3d7b96afbefa8a808000e2e3e34df694bc93e4e4645ab56a45e9d2a5090a0a42afd7e3e2e202c0dcb97319376e1ce5ca9563e0c081942d5b96efbfff9eb66ddbe2e8e858e8ebead8b1237bf7ee65d7ae5d74eedc1980b4b4347efef967002223234dcae73eefd8b1a3312d2b2b8beeddbbf3c30f3f50bf7e7d424242b0b1b161c78e1d8c1a358abd7bf7b272e54a937a962f5fceb061c3b0b5b5a5478f1e54ad5a9513274eb074e952befefa6b7efef9e7bb0e535cbd7a352fbcf002b56bd7e6fbefbf7fa48735ba9676a557fd5e74a9d18b4617fa12820cc9bbef5431b36fdf3ea5d3e9d4a79f7e6a929e9d9dad929393f395dfbb77afb2b4b454a1a1a1c6b4f4f474e5e4e4a4ba77ef6e5236242444393838a8ab57af1ad3bef8e20ba5d3e95444448431edd2a54baa6cd9b2aa5fbf7e26c70706062a37373775e3c60d63dad2a54b954ea7535bb76e357b3db1b1b10a50b1b1b185b87a21443edf7da71428151565363b232b43d57abf96eabcaaf3c36d97108f8acc4ca5162f56aa4a15a52c2c947ae105a5ce9c7968a7ffd77fe75253958a8d7df83fa9a90fe43e9c397346e9743a3568d020b3f95151514aa7d399fd8cb378f162a5d3e9d4cb2fbf6c923e79f264a5d3e9d4ce9d3b4dd273eb193870a0cac9c931c93b7dfab4b2b2b2524e4e4eeaecd9b3c67483c1a09e7efa69a5d3e9945eaf2fd435edd8b143e9743a357efc7863daf7df7faf743a9dead4a993d2e974ea8f3ffe30e6f5ead54be9743a75fefcf97cd7101a1aaa0c0683313d2727470d1e3c58e9743ab569d32663faf1e3c795959595aa53a78e4a484830694f6464a4b2b0b050bd7bf73649f7f5f535b9a677df7d57e9f57ad5be7d7b93cf7c45e9f6f7c9c58b4afdf08352b36629d5bfbf528d1a696f5f90cf8d0f42b10998162c58a0c2c2c2d4f0e1c3954ea7534f3ffdb40a0b0b536161612a2525455dbd7a55d9dbdbabc18307abf0f070f5d1471fa9112346283b3b3b55a54a159598986852dfc2850b954ea7537dfbf6551f7ffcb11a306080d2e9746ac68c1926e572727254ebd6ad55e9d2a5d5b469d3d4871f7ea81a366ca81c1d1dd58913274ccac6c5c5291b1b1be5e5e5a5162d5aa4264e9ca86c6d6d55972e5d0abc2e099884f88ffcfc94f2f1512acf1fdabcc277872bfd54bd3a7cf1f0436e98108f98f474a5e6ce55aa4205a5acac941a3952a9db3e703e08fffaef5c6cacf665c8c3fe79407f8f4f9f3e5da880a95dbb76f9f2b2b2b294a5a5a5f2f1f13149bf53c0646363a32e5dba94afaeb7df7e5be9743a3565ca947c79a74e9d527abdbed00153464686b2b5b5555e5e5ec6b4f1e3c7ab52a54aa93d7bf6289d4ea7962c59a294d23e4f952d5b56d5ab57cf5836272747952f5f5eb9b9b9e50bec9452eaead5ab4aafd7abe0e06063dae8d1a3954ea7535bb66c31dba65ebd7a294b4b4b75f3e64d635a6ec0643018d4881123944ea753414141ead6ad5b85bace8721f77dd2a64dac7275fde7d7d1de5ea9d6ad951a3e5ca98f3e526ac50af9dcf820149b2179e1e1e19c3d7b16d05698d9b06103ebd7af47a7d33160c0005c5d5d193a7428515151444444909e9e4ed5aa5579e1851778f3cd37a954a992497dc3870fc7caca8af0f070366fde4cb56ad598376f1ea1a1a126e5f47a3d5bb66c61fcf8f1cc9f3f9ff4f4745ab468c1ca952ba953a78e49d966cd9ab17dfb76264c98c0d8b1632953a60c43860c61c68c190ff6e6085152fdf20b4447c3975f9a5d46f972da65a6ed9cc6b0e6c36858b1e1c36f9f108f121b1b6d15c92143b43dcb66ce8465cb60e4489830011eb5c503ead787d8d8a2396f11ba7d3f47004b4b4b2a55aac4d5ab570b5d4f8d1a35f26d9f0210171707fcb340565e356bd6a46ad5aa9c3b77ae50e7b0b6b6a675ebd644474773f5ea55ca952bc78e1d3bf0f1f1a155ab5654aa5489c8c848860e1d4a5c5c1c29292926dba59c387182ab57af52a74e1da64d9b66f61c3636361c3d7ad4f83c772e577474b4c9fcf45c494949e4e4e470fcf87193d5879552f4e9d3874d9b36111a1acabc79f30a758d0f9b8505bcf082368ab66953a8550bf26e21f5f7cb27eeb36213309d3e7dfaae65e6ce9d7b4f750e193224df844473ca962dcbc71f7fccc71f7f7cd7b26ddbb6bdeb9e4b4288fb64d62ca85d1b7af7369b3d257a0a0ac5343ff37f888528911c1ce08d3760f870080f87b973e1a38f60ec58eda7cc23b2af989d1d94c0ed366edf933197a5a52539393985ae2777bed2ed52525200f27d919cf7b8c2064ca0cd478a8a8a222a2a8a0e1d3a101f1fcfc48913016dee56eebca5dcc7808000e3b157ae5c01e0e4c99305064c3a9d8ed4d4d47cc7cc9a35abc036dd7e4cae5dbb7661696949b76edd0a7d7d0fdbbc7925f2d7bec895f855f28410c5d4efbf6b2b81bdfaaaf695dc6d8e5c3ac247fb3fe2cd766f52c1be4211345088475cd9b2101606a74fc3d0a1f0eebb50b3a6d6f374dbaa67e2f153d0c236b98b3a5cbc78d16cfe850b17eee93cfefefe006cdbb68da8a8280c06833128f2f7f7e7d2a54b1c3c7890c8c848e3ea7db7b7a54f9f3e180c06b33f393939fcf1c71f26c7e8743aae5fbf7ec763dab56b97ef7e44474753ae5c397af4e8c177df7d774fd7298a3709988410c553783854a800030698cd7ef58757a9e6588dd096a166f385107fab50417b3ffdf10704076b1be0d6aa051f7c0066f61614ff4eee6abdf7d24bf420e46e7a1a1d1d9d2fefd4a953f7d4bb04da10c23265ca101919c98e1d3bb0b5b5a575ebd6c03fbd495bb66ce1a79f7ea2499326942f5fde78ac87870765cb9665cf9e3d64676717ea7cad5bb74629956f29f5c268d4a8113b77eea45cb972f4eedd9b4d9b36dd731da2789280490851fc5cbc089f7c02a1a19067a3e95c5b7fdfca77bf7fc7cc2767626d695d040d14e23154b9322c5a04c78f43a74ef0ca2bda12e4cb9641213fcc8a82952b570ec0381fbba8f4efdf1f2b2b2b162c5860d21683c1c0f8f1e3ef79635d0b0b0bdab76fcfefbfff4e444404eddab5c3caca0ad0e63d362384000020004944415444d5a85183f7df7f9ff4f474636f54de63478d1a45626222a1a1a1646464e4ab3f3131d1640ed3c89123b1b2b262cc98319c3c79325ff9cccc4c76edda55607bebd7af4f4c4c0c952a55a26fdfbeac5bb7ee9eae57144f123009218a9f0f3e004b4b6d0ec66db20dd98cfb611cedaab5e3698fa78ba071423ce6dcdde1d34fe1f06168d1425b24a241036d4f2783a1a85bf7d8727070a055ab56ecdab58b909010a64e9dcadb6fbfcdafbffefa50db51bd7a75de7df75dae5ebd4ab366cd183e7c3813264cc0cbcb8b03070ed0a449937b0e9a727b929292924ce628e5e62525259994cb6bd2a449f4e8d1838f3efa883a75ea3060c000de78e30d060f1e4cfbf6eda95ab52a5f7ffdb5b17cbd7af558be7c3967ce9ca161c386f4e8d18371e3c6111a1a4aaf5ebd707575e5c5175fcc779ebcd754ab562d76edda45b56ad5e8dfbf3fab56adbaa7eb15c58f044c4288e2e5e64df8f0436dce459ea11db996c62de5b74bbf31a7f31cd99c5688ffc2c3435b81322e0eead481e79ed396eedab4495bf158dcb355ab56d1b56b57befffe7ba64d9bc6e4c9933970e040a18e35f7ff994ea7fb57ffcf8d193386356bd650b3664d56ac58c18a152b68d2a409bb77efa65cb972f75c676e20a4d3e9f2f522e5e6595959d1be7dfb7cc75a5a5ab271e34656ae5c49bd7af5f8f6db6f9933670e3ffcf003006fbffd36fdfbf73739a67ffffec4c6c6d2bf7f7f0e1d3ac4871f7ec89a356b3875ea14c1c1c12c5cb8d0a4bcb9fb54ad5a35626262a85dbb362fbcf002cb962dbba76b16c58b4eddebd704e2a18a8b8ba379f3e6c4c6c69a2c7f298428c0fbefc3b87170ea1454ab6692959291429d057508ac13c8a7bd3e2da2060a514ceddeadcd6f8a8ed67a9ede7e1b3a7634bba47f5ef2774e88bb2becfb44de4f0f86f43009218a8fac2c983307faf5cb172c01ffcfde9d875555ed7f1c7f1f90491c0107d4ca1c4873b838de32cba91c52bb9548615e6fe6d0cf21a7944a2b33536f385626a969991a397633b59c4dcd5201294b4bcdd454520831996438fbf7c78e23478e530287e1f37a9ef3a06b2fd6fa6e1c9ef33d6bedef62f2aec924a52731b9fd6427042752ccb56a055bb7c2e6cd6692d4b123b46b075f7fedecc844446e89122611293e962d83932761cc985c978e9d3fc6ac6f67117a5f28d5cb55774270222580c5021d3ac037dfc09a3570fe3cb46e0d0f3fac133545a4c852c22422c5836198e7c374e9028d1be7bafcc2e617f02bedc79856b9932911c963160b74ef0efbf7c3279f9825c99b3583a0203878d0d9d18988dc14254c22523c6cd800070e406868ae4b3b4fec64e5c1954ce930056f776f2704275242b9b8c0134fc08f3fc2c2851019096ddbeafc2611295294308948f11016062d5a409b3676cd56c3caa88da368e6df8cde8d7b3b29389112ae5429e8dbd73cc369c306f0d0f967225274947276002222b76cdf3ed8b6cd2c717c4545aea5df2f25f24c243b9ede818b459f1189389587073469e2f052cec34745c49efe7d389712261129faa64e85dab5e1b1c7ec9a93d3937969cb4bf4a8df83fbefb8df49c189c8b5942d5b1680debdb5022c723dd9ff5ea46029611291a2ede85158b5ca3cacd6d5d5eed2b4ddd3884b8923eca13027052722d753b76e5d0e1f3eccc58b179d1d8adc82b434b3b6c7e1c3f6af9414f37ac58a70d75d101070f975c71de66e4db93165cb96a56eddbace0ea344d25f531129da66cc005f5ff8cf7fec9a4fff799ab0dd610cffe7706a55ace5a4e044e446e84d60d1f2fbef101303df7d67be6262ccc7d3ac56b3cec75d77c13ffe014f3e697e0d0c84aa559d1db5c8dfa78449448aae73e7e0830f60dc38f0f2b2bb346eeb384abb9566dcfde39c149c8848d19491010909101f6fbe4e9db24f8ece9d33fb952d6b2644eddbc3a851e6af1b3480d2a59d1bbf485e53c2242245d73bef98dbf0060fb66b8e3a13c5a2ef1631e7e13994f72cefa4e044449c2f2bcb3c3f383bf9b991d7850bb9c7b9e30e3321fabfffbbbc6a54b3a6b9a22452dc29611291a22929c97c6e69c000f0f1b1351b86c1c80d236950a901039a0d706280222279cb6a3593991b497afef8c3fc9a90609eeb9d93c562feb7e9e777f9d5b0a1fdeffdfcccddce7e7e50a50a942be79c7b16290c94308948d1b46001fcf9278c1c69d7bcfad06a769edcc9974f7d492917fd172722859361c0c58bd74f78ae6ccbcaca3d56850af6894e40c0e564c7d1ab62c55c357244e41af46e42448a9e8c0cb3d8434808dc7ebbadf952e625423787d2b94e673ad5e9e4c40045a424310cb31adcf5129e2b5f1919b9c72a53c63eb9b9fd7668daf4eac98f8f0fb8b915fc3d8b94244a9844a4e859be1c4e9e843163ec9adfd9fb0e27124ff079c8e74e0a4c448a83b4b41b4b7872bed2d2728fe3e909952a5d4e6eaa5675bcf52de716380f8f82bf5f11b936254c2252b41806848541e7ced0b8b1ad392e398e893b26f26cf367b9bbd2dd4e0c50440a938c8c9b4f7e9293738fe3ee9e3bc10908c8fdbc4fce97aac589140f4a9844a468d9b811beff1e66cdb26b1ebf7d3c162c4c683bc1498189487ecbcab22f777d23450f1c557c7375cd9de8dc71c7d5577efcfcccad72164bc1dfb388389f122611295ac2c2a0797368dbd6d6f4e3b91f991b3597b007c3f02bede7bcd844e48659ad90987873450fce9fbfb18a6f8d1a5d3bf929574ee5b045e4c629611291a2233212b66e359f61caf151efe84da3b9b3c29d0c6d39d489c189146d5959e6733879f1ba74e9ead792922e2744566bee381c557c6bd5eaeac94f850aaaf82622f9ab58244cc9c9c9848585b167cf1ef6eedd4b6262221f7cf001fff9cf7f6c7d0cc360d1a245ac5ebd9a989818121212b8f3ce3b79f2c927193d7a341e0e9eb25cb06001d3a64de3f8f1e3dc76db6d0c1b368ca14373bf214b4c4c243434944f3ffd94d4d4545ab66cc9f4e9d369d2a449aebebb77ef26343494fdfbf753ae5c39828383993c7932dedede79fb4311298ec2c2a0562d78fc715bd39747bfe4cba35fb22a78151ea5f4b4b4144d860199997f3f09c98bc42633f3e6e37677370b1b5cef55b1e2e55f972ead8a6f2252b4148b84292e2e8e89132772c71d77101818c8f6eddbb15cb1d138393999679e79867befbd9741830651b9726576efdecdf8f1e3d9b2650b5bb76eb5eb3f77ee5c060d1a44505010a3478f66c78e1d0c1b368c9494144243436dfdac562b5dbb76e5fbefbf273434145f5f5fe6cc9943dbb66d898a8aa24e9d3ab6be31313174e8d081060d1a3073e64c7efbed37a64d9bc691234758bf7e7dfefe90448abaa34761d52a983ddbf67172a63593e7373e4f9b3bdaf058bdc79c1ca0146586611607c8efd5956bbd1cadb65c8f87c78d252c7e7e37d62ffb7523e37a78685b9b88940cc52261aa56ad1abffffe3b952b57262a2a8a162d5ae4eae3e1e1c1eeddbbb9e79e7b6c6dfdfaf5a366cd9ab6a4a943870e00a4a6a6326edc38ba75ebc6f2e5cb6d7dad562b13274e64e0c08154a8500180952b57f2cd37dfb072e54a1effeb53efe0e060020202183f7e3c4b972eb5cd3776ec587c7d7dd9be7d3b65ca9401a066cd9a0c1830804d9b36f1d0430fe5cf0f48a4389831c37c3afbe9a76d4df3a3e67328ee108b072ecef52189146f2929f0d55770f870de2537573e1b7323bcbc6e2ce12857eee612961b4956dcdd95b088881484629130b9bbbb53b97265c0dc7ae7889b9b9b5db294edd1471f65fcf8f1fcf4d34fb68469dbb66d2424243078f060bbbe43860c61e9d2a5ac5bb78ea79e7a0a3013a6aa55abda9225003f3f3f82838359b26409191919b8b9b9f1e79f7fb279f366468d1a654b9600faf4e9c3c8912359be7cb9122691ab39770e3ef800c68d33dfa102896989bcbafd55fafca30f4dfd9b3a39402908478ec0faf5f0c51766b2949676798bd7b5928bd2a5cdad5e7f6715e55a2f3737554d131129098a45c2742b7efffd77c04c72b2eddfbf1f80e6cd9bdbf56ddab4292e2e2ec4c4c4d812a6fdfbf7d3b469ee376b2d5ab460debc791c3e7c98060d1a70e0c001323333738de9e6e6466060a06d4e117160f66cf3a3f41c1f624cda3989948c14267798ecc4c0243fa5a4c0f6ed6682f4c517f0cb2fe6aaca030fc0a449d0a50bd4aba7a4454444f257894f98c2c2c2285fbe3c5dba74b1b5c5c6c6e2eaea6a974481b992e5ebebcb993367ecfab6cd51de389bbfbf3f0067ce9ca1418306c4c6c6dab5e754b56a5576edda75cd38478c1861db06982d2424849090906bdfa04851979464264c030698cb04c02f09bff0d6b76ff1f2032f53ad6c3527072879c530cc55a4ec0469fb7673cb5ccd9a6672d4a50bb46b679e87232252d245444410111161d7969898e8a4688ab7129d304d9e3c992d5bb6101e1e4eb972e56ceda9a9a9b8bbbb3bfc1e0f0f0f5253536dbf4f4b4b735861cfd3d3d33656ceaf57eb9b734c4766cd9ae570254ba4d85bb810fefc13468eb435856e0ea5b2776546b71aedc4c0242fa4a4c0b66d9793a463c72eaf224d9e0c0f3f0c77dda5552411912b39fae03c3a3a9a66cd9a3929a2e2abc4264ccb962de395575ea17ffffe3cfbecb376d7bcbcbc484f4f77f87d69696978fdf50c4576df4b972e39ec977d3de7d7abf52d5dbaf4dfbb1191e22c2303a64f87279f843bee0060c7891dac3eb49a8f1efd88d26efa7753d4e45c455abfde7c1649ab482222529895c88469d3a64df4e9d3876eddbaf1de7befe5baeeefef4f565616f1f1f176dbf2d2d3d3494848a05ab56a767d736ed1cb96bd052fbb6ff656bcecf62bfbe61c5344feb262059c3c0963c6006035ac8cda308ae6d59af354e3a79c1c9cdca8abad22b5690353a698499256914444a4b02a710549f7ecd9c3638f3d46cb962d59be7c392e0e6ab2661f38bb6fdf3ebbf6c8c848ac562b818181b6b6c0c040a2a3a37355e7dbb3670fdedede04040400d0b061434a952a956bccf4f474626262ecc61411cca588b030e8d409fef10f00167fb798a8d82866769a898ba5c4fdf755641806fcfc33cc9a65fef1f9f840b76eb06e9df9fbcf3f878404d8b8d1dc69a9c20d2222529895a8771c870e1da26bd7aed4aa558bb56bd73a7c9e08a07dfbf6f8f8f8101e1e6ed71e1e1e8eb7b7375dbb76b5b505050571f6ec5956af5e6d6b8b8f8f67c58a1574efde1db7bf8e2c2f5fbe3c0f3ef8204b962c212929c9d677f1e2c5242727d3b367cfbcbc5591a26fe346f8ee3bf8eba0e8e4f464c66e1d4bcfbb7bd2faf6d64e0e4eae9492622644438640edda6612f4c20b66f234650a1c3a64ae2ccd9963264fdedece8e584444e4c6149b2d79b367cf263131d1b63d6ecd9a359c3c79128061c38661b158e8d4a913898989848686f2f9e79fdb7d7f9d3a756ce734797a7a3271e244860c19427070301d3b7664e7ce9d2c5dba94c99327db55ab0b0a0ae29e7beea16fdfbe1c3c78105f5f5fe6cc998361184c9830c16e8e499326d1aa552bdab469c38001033875ea143366cca053a74e74ecd8313f7f3c22454f5818346f6e3ed0024cdd3d95f89478de7cf04d270726602642870f5fde6697fd2cd29d77da3f8ba4c44844448a3ca398a859b3a661b1580c8bc562b8b8b8182e2e2eb65f9f3871c2f8f5d75f6dbfcfee97f3d5b76fdf5c63ce9f3fdfa857af9ee1e1e161d4ad5bd778ebadb71cce7dfefc79a37ffffe869f9f9fe1eded6db46bd7ce888a8a72d877d7ae5dc67df7dd677879791955aa54319e7bee39232929e9aaf71515156500571d4fa458dab7cf30c030962f370cc3307ebbf09be1f5869711ba29d4c981956c494986f1f9e7863178b061dc79a7f947e4ee6e181d3b1ac6cc9986f1d34f8661b53a3b4a1191924bef1bf387c530ae78f8460a95ecf2905151512a2b2e25c7134f4064a4b984e1ea4a9f4ffbf0e5d12f393aec28e53cca5dfffb254f64af22ad5f6fae22edd8a155241191c24cef1bf347b1d9922722c5c42fbfc0ca95e661b5aeaeec3bbd8fc5df2fe6bdaeef29592a00c9c9f615ed7efd153c3ccc8a76fffdaf99240504a848838888941c4a9844a4709931037c7de1e9a7310c83511b47d1b07243fa35ede7ecc88aa5ec8a76399f454a4f875ab5cc4363bb7481b66db58a2422222597122611293ce2e260e142183b16bcbc58757025bb4eee6243ef0d9472d17f5779253919b66ebd9c241d3f7e7915e9cd37cd44a96e5dad2289888880122611294c66cf061717183c98b4cc34423785f270dd87e9585b55246fc5b55691ba76bdfc2c52e9d2ce8e544444a4f051c22422854372b29930f5ef0fbebebcfd7518272f9c645daf75ce8eac48bada2a52dbb666c5f62e5db48a242222722394308948e1b060015cb8002347722ef91c93764e62508b41d4af54dfd991150986013ffd743941dab1e3f22a52b76e979f45d22a928888c8cd51c22422ce979101d3a7c3934f42cd9a8c5f37080b16c6b719efecc80ab5ec55a4f5ebe1cb2fb58a242222921f94308988f3ad5801274fc29831fc70ee07e645cd63ea4353f12bede7ecc80a95abad22d5aead5524111191fca28449449ccb30cce5904e9d301a37e6f9a59da955b116435b0e75766485425292fdb348274e80a7a799184d9d7a791549444444f28712261171ae4d9be0bbef60c60cbe38fa051b7fd9c8a74f7c8abbabbbb323738aec55a4f5ebcd0469e7cecbab48ddbb9b25bfdbb4d12a928888484151c22422ce151606cd9a91f1406b9e9ffb0fdad66ccbbfeefa97b3a32a505a4512111129bc94308988f34445c1962db06c19f3a2e7f373fccf7cfcf8c7588a799502c38043872e2748d9ab4875eac0238f5c7e16c9cbcbd9918a888888122611719ea953a1562dce7769c7f8f0fa3c1df8344dfc9b383baa7c919464e686d949d2c993e62a52bb76306d9a9924d5a9e3ec28454444e44a4a9844c4397ef9c5ac8ef7ce3bbcf1cd7f49cb4c6352fb49ce8e2acf5cb98ab46387593dbd4e1df8d7bfb48a242222525428611211e79831037c7cf8e591fb79e78311bcdae655fccbfa3b3baa5b72ad55a4e9d3b58a242222521429611291821717070b17c2d8b18cf97a3c55ca5461d4bda39c1dd54d330c3878d0fe59a48c0cb340c3a38f9a09529b365a4512111129ca94308948c19b3d1b5c5cd8d5ad319fae7995258f2da1b45bd1a8937df1a259d16efd7af8f2cbcbab48eddb9b8b665dba9825c0454444a47850c22422052b391966cfc6daaf1fc3f64ea065f59684340a71765457a55524111191924d09938814ac850be1c2055677be9dfdfbf6f3f5335fe36271717654762e5eb47f16e9b7dfcc84a85d3bad2289888894344a9844a4e06466c2f4e964f4ecc1b04333086e104cabdb5a393b2ac04c8a962d33b7daedda65ae220504c0e38f9b09d2030f6815494444a42452c224220567c50a387182f9e33a92703681371f7cd3d9110170ee1cb46c09172e681549444444ec296112918261181016466afb07187d6e0923ef1d49cd0a359d1d15562b3cfdb4f9f5d831a85ad5d911898888486152b81e1c1091e26bf366888961e6fd6e94f528cb4bad5f72764400bcfdb6f99cd2a2454a964444442437ad308948c178f34d921bd5631c5b98d76e1ee53cca393b22a2a32134149e7f1e3a77767634222222521869854944f25f54146cd9c29badac34aad288679a3ce3ec88484a82901068dc18264f7676342222225258158b8429393999f1e3c7d3b973677c7c7c70717161d1a245b9faedddbb97c18307d3ac5933dcdcdc7071b9f6ed2f58b080faf5ebe3e5e545404000b367cf76d82f31319181030752a95225ca942943fbf6edd9bf7fbfc3bebb77efa675ebd6787b7be3efefcff0e1c3494e4ebef99b16294aa64e25a94615265739cc8c4e337075717576440c1b06a74f434404b8bb3b3b1a11111129ac8a45c2141717c7c48913f9f9e79f090c0c04c062b1e4eab77efd7a162c5880abab2bb56bd776d827dbdcb973193060008d1a3562f6ecd9dc7befbd0c1b368cb0b030bb7e56ab95ae5dbb12111161bb7eeedc39dab66dcbd1a347edfac6c4c4d0a14307d2d2d298397326fdfbf767debc79f4ecd9330f7e0a2285d4b163182b56f0e63d1974a9d78d076b3de8ec888888800f3e803973cc036845444444aeca28062e5dba649c3d7bd6300cc3888c8c342c168bb168d1a25cfdce9e3d6ba4a5a51986611843860c312c168bc3f15252520c5f5f5fa37bf7ee76edbd7bf736ca9429639c3f7fded6b66cd932c362b118ab56adb2b5c5c5c519152b56347af5ea65f7fd5dba7431aa57af6e5cbc78d1d6f6fefbef1b168bc5d8b871a3c358a2a2a20cc0888a8abad68f40a4f01a32c4482eef6d947dd9d5f829ee27674763fcf28b61942b6718bd7a1986d5eaec68444444f28ede37e68f62b1c2e4eeee4ee5ca9501300ce3aafd2a57ae8c8787c775c7dbb66d1b0909090c1e3cd8ae7dc89021242727b36edd3a5bdbca952ba95ab52a8f3ffeb8adcdcfcf8fe0e0603efbec3332323200f8f3cf3fd9bc7933bd7bf7a64c9932b6be7dfaf4a14c99322c5fbefcc66e56a428898bc358b890992d3278bad560eef2bbcba9e1646440af5ee0eb0be1e1708d456611111111a0986cc9cb6bd9cf1f356fdedcaebd69d3a6b8b8b810131363d7b769d3a6b9c668d1a2052929291c3e7c188003070e909999996b4c373737020303affacc934891f6eebba45b335878af17e3db8c7776348c1f6fd69f88888072ce2fd2272222224580ca8a3b101b1b8babab2b7e7e7e76edeeeeeef8fafa72e6cc19bbbe6ddbb6cd3586bfbf3f0067ce9ca1418306c4c6c6dab5e754b56a5576edda75cd98468c1841850a15ecda424242080909b9a17b122970c9c964bef316f3023379eee1d7f02dedebd470b66c81fffe17a64c817ffed3a9a1888888dcb2888808222222ecda1213139d144df1a684c981d4d454dcaf5236cbc3c383d4d454dbefd3d2d21c6ef3f3f4f4b48d95f3ebd5fae61cd39159b366395cc91229ac8c850bb1245e6075e79a6c6831f8fadf908fe2e2e0dfff860e1d60cc18a78622222292271c7d701e1d1d4db366cd9c1451f1a584c9012f2f2fd2d3d31d5e4b4b4bc3cbcbcbaeefa54b971cf6cbbe9ef3ebd5fa962e5dfa96e31629343233497d7312ff6b6030e2c959b8bb3aaf6eb761c033cf98cf2f7df4115ce73401111111113b7aebe080bfbf3f595959c4c7c7dbb5a7a7a793909040b56ad5ecfae6dca2972d7b0b5e76dfecad78d9ed57f6cd39a6485197b9ec134a9f3ecbf6a0e63c72d7234e8d65f66c58bb16162d02073b6245444444ae490993034d9a340160dfbe7d76ed91919158ad56db594f00818181444747e7aaceb767cf1ebcbdbd09080800a061c386942a552ad798e9e9e9c4c4c4d88d2952a41906e75f7f910db561f0c0f9d73cef2cbf7df71d8c1e0d2346c0c30f3b2d0c11111129c2943039d0be7d7b7c7c7c080f0fb76b0f0f0fc7dbdb9bae5dbbdada828282387bf62cab57afb6b5c5c7c7b362c50aba77ef8e9b9b1b00e5cb97e7c1071f64c99225242525d9fa2e5ebc98e4e4641d5e2bc5c6c5759f52e9f0690efca70b81559df7414072323cf924dc7db759ec41444444e4ef2836cf30cd9e3d9bc4c444dbf6b8356bd670f2e44900860d1b46b972e53871e2048b172f06ccd52280499326611806356bd6a477efde80598461e2c4890c193284e0e0603a76ecc8ce9d3b59ba742993274fb6ab56171414c43df7dc43dfbe7d3978f020bebebecc993307c330983061825d8c93264da255ab56b469d38601030670ead42966cc9841a74e9de8d8b163beff8c440ac29957479252cd85de231638358e1123e0e449888e861b387e4d444444c431e79e9b9b776ad6ac69582c16c362b1182e2e2e868b8b8bedd7274e9c300cc330b66ddbe6b08fc56231dab56b976bccf9f3e71bf5ead5333c3c3c8cba75eb1a6fbdf596c3b9cf9f3f6ff4efdfdff0f3f333bcbdbd8d76edda5df584e55dbb7619f7dd779fe1e5e56554a952c578eeb9e78ca4a4a4abde974e6c96a2e4c4964f0d038c55e39f706a1ccb96190618c682054e0d434444a440e97d63feb018c6150fdf48a1925d1e322a2a4a65c5a5d0db715f0d6afef43b954e9dc7cbabac5362387e1c0203a17367f3805a273e4225222252a0f4be317fe8192611c913dfecf898fbbe39cdb9fffbb7d392a5cc4ce8d50b2a5684f7de53b224222222b7aed83cc32422ce9365cde2f8f8e1d4f72e45b3b1b39d16c78409b0772fecdc09391e3514111111f9dbb4c22422b76cd9f6d9fcebeb782e0ef80f166f6fa7c4b07d3b4c9a04afbf0ef7deeb9410444444a41852c22422b7e4e2a58b9c79f3655c2daedc36d639f5bbfff8037af786b66de185179c128288888814534a9844e496ccd83c91a7772571e9e97f839f5f81cf6f18d0af1fa4a5c1e2c5e0ea5ae0218888884831a6679844e46f3b79e12489efcda4629a05d797c63b2586f070f8ec3358b306aa57774a08222222528c69854944feb6711b5f60e4d756ac3d83a066cd029fffc00118350a9e7b0eba772ff0e9454444a404d00a9388fc2d7b4eed2163f927dc7e1e78e1a5029f3f25059e7c12eeba0bc2c20a7c7a1111112921943089c84d330c83915f8e60c11e2f8c87eec3d2a44981c7306a14fcfa2b444682a767814f2f2222222584122611b969cb7f5c4ee99ddf52ff376061c197a55bb50ae6ce8579f3e0eebb0b7c7a1111112941943089c84d49cb4ce385cd2ff0e9fe4ad0a40674e850a0f39f3c09fdfb435090f955444444243f296112919b32f39b9954fef9144d0e6441c4db60b114d8dc9999f0d45350ae9cb9ba5480538b88884809a58449446ed8ef49bf3379d764b61faa0d776698cb3c0568d224d8bd1b76ec808a150b746a11111129a1943089c80d7b65db2bd44e74a1e9cea3f0f6db50aae0fe0bd9b9135e7f1d5e7b0deebbafc0a615111191124e099388dc90ef7eff8e05d10bd8ff6b6b2c150f42dfbe0536774282b915af756b183bb6c0a615111111d1c1b522727d8661f0fcc6e769e1518bc66b23cd93624b972ea0b961c000484e86a54bc1d5b540a61511111101943089c80d587b782d5b7eddc247a75b62011832a4c0e69e370f56af86050ba0468d029b564444440450c22422d7919e95cee84da379b85a5b02223642bf7ee0e7572073fff8238c18018306c1a38f16c8942222222276943089c835bd17f91e47fe38c2bc3feec572fe3c8c1a5520f3a6a6c2934f42edda307d7a814c29222222928b8a3e88c85525a426f0daf6d718f08fbe541ff5090407c39d7716c8dca347c3d1a3b06f1f787915c89422222222b928611291ab7afdabd7c9b066f0e68596f0eb4258b9b240e6fddfff60ce1c080f87860d0b644a1111111187b4254f441cfa39fe67deddf72e63ef7b890a6fcd85071f84a64df37dde53a7ccc7a41e7b0c9e7d36dfa7131125949e4b00002000494441541111b926ad30898843a19b43a95eb63acfa706c2fe71b07163becf999505bd7b9b15cbdf7f1f2c967c9f52444444e49a943089482e5b7fddca9a9fd7f0498f4f701f350b9a34315798f2d99429b073276cdb063e3ef93e9d888888c875296112113b59d62c466e18c9bd35ee2538bd2e6cda041111f9bedcf3f5d7f0da6bf0ca2bf0c003f93a95888888c80d2b16cf30252727337efc783a77ee8c8f8f0f2e2e2e2c5ab4c861df43870ed1b97367ca962d8bafaf2f7dfaf4213e3ede61df050b1650bf7e7dbcbcbc08080860f6ecd90efb2526263270e0402a55aa4499326568dfbe3dfbf7ef77d877f7eeddb46edd1a6f6f6ffcfdfd193e7c38c9c9c97fefc645f2c107311ff0fdd9ef99d969269669d3a0664d080acad7391313a1572fb8f75e78f9e57c9d4a444444e4a6148b84292e2e8e891327f2f3cf3f1318180880c5c1a7e1a74e9de281071ee0d8b1634c993285d1a347b36edd3a1e7ae821323232ecface9d3b97010306d0a8512366cf9ecdbdf7decbb061c3080b0bb3eb67b55ae9dab52b111111b6ebe7ce9da36ddbb61c3d7ad4ae6f4c4c0c1d3a74202d2d8d993367d2bf7f7fe6cd9b47cf9e3df3f82722f2f75cbc749197b7be4caf46bdf867466558be1c9e7f1e4ae5df62b461c0c081f0e79fb07469be4e2522222272f38c62e0d2a54bc6d9b3670dc3308cc8c848c362b1188b162dcad56fd0a04186b7b7b7f1db6fbfd9da366fde6c582c1663debc79b6b6949414c3d7d7d7e8debdbbddf7f7eedddb2853a68c71fefc795bdbb265cb0c8bc562ac5ab5cad61617176754ac58d1e8d5ab97ddf777e9d2c5a85ebdba71f1e2455bdbfbefbf6f582c1663e3c68d0eef2d2a2aca008ca8a8a81bf95188dc92b15bc61a9e6f781a27124f18c673cf1986afaf612425e5eb9cf3e71b0618c68a15f93a8d888848b1a7f78df9a358ac30b9bbbb53b97265000cc3b86abf55ab56d1ad5b376ad4a8616bebd0a1030101012c5fbedcd6b66ddb36121212183c78b0ddf70f193284e4e464d6ad5b676b5bb9722555ab56e5f1c71fb7b5f9f9f9111c1ccc679f7d665bb9faf3cf3fd9bc7933bd7bf7a64c9932b6be7dfaf4a14c993276f38b38c389c4134cdf3d9de7ef7d9edb33fe2a53377428787be7db9c870ec1b061e60a533eeffa13111111f95b8a45c274234e9f3e4d5c5c1ccd9b37cf75ad458b1676cf1c65fffacabe4d9b36c5c5c585989818bbbe4d1d9c4dd3a2450b525252387cf83000070e1c20333333d7986e6e6e0406065ef599279182f2e29617a9e85591175bbf689e1a0b306448becd9796064f3e693e22357366be4d23222222724b4accd302b1b1b100f8fbfbe7bae6efef4f424202191919b8b9b9111b1b8babab2b7e7e7e76fddcddddf1f5f5e5cc993376e3b66ddbd6e1980067ce9ca1418306d79cbf6ad5aaecdab5eb9af18f1831820a152ad8b585848410121272cdef13b911dffcf60d9ffcf0090b1e5940994c1778e71d78e619a85429dfe60c0d859f7f86bd7bcd7397444444e4c645444410111161d7969898e8a4688ab7129330a5a6a602e0e1e191eb9aa7a7a7ad8f9b9b1ba9a9a9b8bbbb3b1cc7c3c3c33616405a5ada75c7bc91f9738ee9c8ac59b31cae6489dc2ac33018b96124815503f9cf3ffe03e1ef4142028c1a956f737efeb99993cd9e0d8d1be7db34222222c596a30fcea3a3a369d6ac9993222abe4a4cc2e4e5e505c0a54b97725d4b4b4bb3ebe3e5e5457a7abac371d2d2d26cfdb2fbdee898d79abfb43e621727f9e4874fd8737a0f5bfb6cc5d56ac0f4e9101c0cb56ae5cb7c67ce40dfbef0c82370c5638222222222854e897986297b2b5cf6d6b89c626363f1f5f5c5cdcdcdd6372b2b2bd7f94ce9e9e924242450ad5a35bb71736ed1cb392660eb7bbdf9738e2952505233527961f30bfcebae7fd1eece76b06a15fcfa2b8c19932ff3656541efdee0e9090b17e6fb59b822222222b7acc4244cd5ab57a752a54aecdbb72fd7b5bd7bf7dace6f0268d2a40940aebe91919158ad56bbbe818181444747e7aaceb767cf1ebcbdbd09080800a061c386942a552ad798e9e9e9c4c4c4d88d295250667c3383df937e67ea4353cd0391c2c2e0c107219fb67f8685c1f6edb06409f8fae6cb142222222279aac4244c003d7af460eddab59c3a75cad6b665cb168e1c396277786cfbf6edf1f1f1213c3cdceefbc3c3c3f1f6f6a66bd7aeb6b6a0a020ce9e3dcbead5ab6d6df1f1f1ac58b182eeddbbdb56adca972fcf830f3ec892254b484a4ab2f55dbc7831c9c9c93abc560adcef49bf3365d71486b61c4a5ddfbab0752b44479bd518f2c1b7dfc22bafc0d8b1e0a04e8a88888848a1546c9e619a3d7b36898989b6ed716bd6ace1e4c993000c1b368c72e5ca3176ec5856ac5841bb76ed183e7c38172f5e64ead4a9346edc98be7dfbdac6f2f4f464e2c4890c193284e0e0603a76ecc8ce9d3b59ba742993274fb6ab56171414c43df7dc43dfbe7d3978f020bebebecc993307c330983061825d8c93264da255ab56b469d38601030670ead42966cc9841a74e9de8d8b16301fc94442e7b79ebcb7894f2e095075e311bc2c22030d05c61ca63172e404808b46c09e3c7e7f9f022222222f9c7b9e7e6e69d9a356b1a168bc5b0582c868b8b8be1e2e262fbf58913276cfd7efcf147a353a74e86b7b7b7e1e3e363fcfbdfff36ce9d3be770ccf9f3e71bf5ead5333c3c3c8cba75eb1a6fbdf596c37ee7cf9f37faf7ef6ff8f9f919dedede46bb76edae7ac2f2ae5dbb8cfbeebbcff0f2f232aa54a9623cf7dc73465252d255ef4b27364b7ed81fbbdfb0bc6631defef6edbf1af61b0618c6c71fe7f95c56ab613cf18461942b6718bffe9ae7c38b8888c85ff4be317f580ce38a876fa450c92e0f191515a5b2e292270cc3a0c3471d884d8ae5fbfffb1e37573778ea29f8fa6b387a144ae5edc2f3071f98473a7df2093cf1449e0e2d22222239e87d63fe28365bf244e4c67c7ef873b61ddfc6da90b566b274fc382c5b063367e679b2f4f3cf307428f4eba764494444448aa61255f441a4a44bcf4a67f4c6d13c54eb211eaefbb0d938630654a8602e03e5a14b97cce7966ebb0dde7a2b4f871611111129305a61122941e6ec9bc32fe77f6155f02a2c160bc4c7c3fbef9b95f1bcbdf374ae975e821f7f843d7bf27c681111119102a38449a484f823e50f267c3581fe4dfbd3a84a23b371ce1cf3eb9021793ad7faf5e60ebfb7de320bef898888881455da922752424cf86a0259d62c5e6ffbbad9909202efbc636ec5ab5429cfe6898d85a79f86ae5de1b9e7f26c5811111111a750c2245202fc14ff1373f6cd61dcfde3a852a68ad9f8e187909000a346e5d93c562bf4e963d68ef8e003b058f26c6811111111a7d0963c911260cca631dc56fe3686df33dc6cc8cc84e9d3a1674fa8552bcfe699360db66c814d9bf274d14a444444c46994308914739b8f6d66ede1b52c0b5a8667294fb371f56a38760c962fcfb379f6ee8571e3e08517a043873c1b56444444c4a9b4254fa418cbb266316ac328eebbed3e7adeddd36c340c080b33b39a66cdf2649e3fff344b88376d0aafbf9e27438a888888140a5a611229c616ee5fc8817307d8db7faf59461c60eb56888a820d1bf2640ec3804183202ecedc8ae7e69627c38a888888140a4a98448aa93f2ffdc9cbdb5ea677e3deb4a8dee2f285b030b3d6f7430fe5c93c8b17c3c71f9baf3c7c1c4a444444a45050c224524c4dd935858b972e32b9fde4cb8d3131b071a399dde44109bb2347cc239c9e7edadc922722222252dce819269162e878e271667e3393d1ad46735bf9db2e5f983a15eeb8c3ac8e778bd2d3cd24c9dfdf3cce49444444a438d20a934831f4e2e617f1f1f221f4bed0cb8dc78fc3b2653073a67950d22d1a370ebeff1ebefd16ca94b9e5e1444444440a25254c22c5cceedf76b3ecc7657cf0af0f28e39e2393993913ca9787679eb9e539366c30cf5c9a31c3ac8c27222222525c694b9e48316235ac8cdc309226559bd0e71f7d2e5ff8e30f78ff7d183a14bcbd6f698eb367a14f1fe8dc19860fbfc580454444440a39ad30891423110722d87b7a2fdbffb31d174b8ecf43e6cc01abd54c986e81d50afff98f592fe2c30fc1451fb98888884831a78449a49848c948e1c52d2ff258bdc76853b3cde50ba9a9f0f6dbe656bc4a956e698e9933cded781b3640952ab718b08888884811a0cf87458a8919dfcce06cd259c21e0ab3bff0c107909000a346ddd2f89191f0d24b30660c74ec784b438988888814194a98448a813317cff0df5dffe5b97f3e471d9f3a972f6466c2f4e9101404b56bffedf12f5e344b88ffe31ff0c61b7910b08888884811a12d7922c5c0cb5b5fc6b39427af3cf08afd85d5abe1d83158befc96c67fee39f8fd77f8e20b7077bfa5a1444444448a14254c22455c746c341fc67cc83b5ddea1826785cb170c03c2c2a0430768d6ec6f8fbf74292c5a048b17439d3ad7ef2f222222529c28611229c20cc3e0f98dcf53cfaf1ecf367fd6fee2b66d1015655668f89b7ef905060d827fff1b7af7bec560454444448a20254c2245d8673f7fc6f6e3db59df6b3da55caef8e71c16663e74f4d0437f6becf474f3b9a52a55e0dd77f3205811111191224809934811959e95ce984d63e858bb239deb74b6bff8dd77e6cad2d2a5e6a1497fc3abafc2fefdb07b37942d9b07018b888888144125ae4a5e5454149d3b77a67cf9f2942b578e4e9d3af1dd77df39ec7be8d0213a77ee4cd9b265f1f5f5a54f9f3ec4c7c73becbb60c102ead7af8f979717010101cc9e3ddb61bfc4c444060e1c48a54a952853a60ceddbb767fffefd79767f5272ccde3b9b63e78f31bde3742c57264553a7c21d7740cf9e7f6bec4d9be0cd3761f26468d1220f821511111129a24a54c2141d1d4debd6ad397efc38afbdf61aafbefa2a478e1ca14d9b361c3e7cd8aeefa953a778e081073876ec1853a64c61f4e8d1ac5bb78e871e7a888c8c0cbbbe73e7ce65c08001346ad488d9b36773efbdf7326cd830c2c2eccfc3b15aad74edda95888808dbf573e7ced1b66d5b8e1e3d9aeff72fc5477c4a3caf7ff53a039b0da461e586f6174f9c804f3e31cf5d7273bbe9b1cf9d833e7dcc9d7ccf3f9f47018b88888814554609f2f0c30f1bbebebe46424282ad2d3636d6285bb6acd1a3470fbbbe83060d32bcbdbd8ddf7efbcdd6b679f366c362b118f3e6cdb3b5a5a4a418bebebe46f7eeddedbebf77efde469932658cf3e7cfdbda962d5b66582c1663d5aa55b6b6b8b838a362c58a46af5ebd1cc61c15156500465454d4dfbb69299686ae1f6a949b52ce389b7436f7c5e1c30dc3c7c73092926e7adcac2cc3e8d2c5302a55328cd8d83c08544444440a8cde37e68f12b5c2b473e74e1e7cf0412a56ac686bab5ab52a0f3cf0006bd7ae253939d9d6be6ad52aba75eb468d1a356c6d1d3a7420202080e539ceb4d9b66d1b0909090c1e3cd86eae214386909c9cccba75eb6c6d2b57aea46ad5aa3cfef8e3b6363f3f3f828383f9ecb3cf72ad5c89387228ee10e1fbc21977ff382a7b57b6bff8c71f307f3e0c1902dede373df6db6f9b672d2d5a0455abe651c0222222224558894a98d2d3d3f1f2f2cad55eba7469d2d3d3f9e1871f00387dfa34717171346fde3c57df162d5ad83d7394fdeb2bfb366dda14171717626262ecfa366ddad4e198292929b9b6058a38327ad3686e2f7f3bc3ff393cf7c53973c06a85a1436f7adcfdfb2134d4dcc9d7a54b1e042a222222520c94a82a7977dd7517df7cf30d56ab15171733574c4f4f67cf9e3d009c39730680d8d85800fcfdfd738de1efef4f424202191919b8b9b9111b1b8babab2b7e7e7e76fddcddddf1f5f5b58d993d6edbb66d1d8e993d7f83060d1cc63e62c4082a54a860d7161212424848c88ddcba14131b7fd9c8fa23eb59d173051ea53cec2fa6a69a4b44cf3c03952b3b1ee02a9292e0c927a15123b3d083888888146e111111444444d8b52526263a299ae2ad44254c83070f66d0a041f4ebd78fd0d050b2b2b278e38d37f8fdf7df01484d4db5fbeae1e1916b0c4f4f4f5b1f37373752535371777777389f8787876d2c80b4b4b4eb8e7935b366cd72b83a252547a63593e7373e4febdb5bd3a37e8fdc1d3efc101212cc25a29b347c389c3e0dd1d1e0e0afa888888814328e3e388f8e8ea659b3664e8aa8f82a515bf29e7df659c68e1dcbc71f7f4c83060d68dcb831bffefa2ba1a1a10094295306c0b66defd2a54bb9c6484b4bb3ebe3e5e5457a7abac3f9d2d2d2ecb6007a7979ddd098228e2c885ec00fe77e6046c719b9cb886765c1b469101404b56bdfd4b89f7c020b179a87d30604e461c022222222c540894a9800de78e30dce9e3dcbae5dbb3870e0007bf6ec212b2b0b8080bfde2d666f91cbde9a97536c6c2cbebebeb8fd55aed9dfdf9facacac5ce733a5a7a793909040b56ad56c6dfefefe765bf4728e09d8f515c9e942da055ed9f60aff6efc6f5a54777030d2ead570ec188c197353e3fefa2b3cfb2c848498a5c445444444c45e894b98002a54a840ab56ad6ccf0b6ddebc99db6ebb8d7af5ea0150bd7a752a55aac4be7dfb727defdebd7b090c0cb4fdbe49932600b9fa46464662b55aedfa060606121d1d8d6118767df7ecd983b7b7b72d6113b9d2945d53484a4f627207070f18198679ca6cfbf6e0a050c9d5646440af5ee0eb0be1e170e5a2958888888894d08429a765cb96111919c9881123ecda7bf4e8c1dab56b3975ea94ad6dcb962d1c3972849e3d7bdadadab76f8f8f8f0fe1e1e176df1f1e1e8eb7b7375dbb76b5b505050571f6ec5956af5e6d6b8b8f8f67c58a1574efdeddb66a2592d3afe77f65e6b73309bd2f941ae56ae4eeb07d3b44459925ee6ec26baf416424444440f9f27912aa88888848b153a28a3eecd8b183d75f7f9d4e9d3ae1e3e3c3b7df7ecb871f7e48972e5d183edcbe44f3d8b16359b16205eddab563f8f0e15cbc7891a953a7d2b87163faf6ed6bebe7e9e9c9c4891319326408c1c1c174ecd8919d3b77b274e952264f9e6c57d92e2828887beeb987be7dfb72f0e0417c7d7d9933670e86613061c28402fb3948d1f2c2e617f02bedc7985657d96e1716068d1b43c78e373ce6d6ad30658a5911ef9fffcca340454444448aa1129530d5a8518352a54a3175ea542e5ebc48ad5ab598346912a3468db29519cfd9f7abafbe62d4a851bcf8e28b787878d0ad5b37a64f9f9e6b2568d0a041b8b9b9317dfa74d6ac59c3edb7dfceac59b318366c985d3f171717d6af5fcf98316378fbedb7494d4da565cb967cf4d147d4ad5b37dfef5f8a9e5d2777b1e2e00a3efcd78778bb3b3888f6bbefe0cb2f61c9921bde53171f0fbd7b9b3bf86e72514a444444a4c4b118573e5023854a7679c8a8a82895152f61ac86957fbeff4f0cc360ef80bdb8581ceca0eddd1b76ee84a347e106b6741a06fceb5ff0cd3766aea53a23222222c587de37e68f12b5c22452947c7ce06322cf44b2e3e91d8e93a51327cc9ae03366dc50b20466e9f0cf3f87b56b952c89888888dc88125ff441a4304ac948e1a52d2fd1a37e0feebfe37ec79d66ce34ab35f4eb7743637ef71d8c1e6d1e529ba31689888888885c831226914268daee699c4b3ec79b0fbee9b8c31f7fc0fcf9306408783b78b6e90ac9c9f0e49350bfbe59815c444444446e8cb6e4891432a7ff3ccd9b5fbfc9b07f0ea3b64f6dc79dc2c3c16a85a1436f68cc9123e1e449b3fab887471e062b22222252cc29611229645edef632a5dd4af3f2fd2f3bee909a0a6fbf0d7dfb42e5cad71d6fc50a7331eafdf7e1afb39945444444e4062961122944a263a35914b388771f7e97f29e57394d76d122734bdea851d71defc4091830008283e19967f23858111111911240cf3089141286613072c348ea57aacf8066031c77caca8269d3a0470fa853e79ae3656642af5e50a102cc9d7bc3c73489888888480e5a611229243efde953769cd8c1174f7d412997abfcd35cbd1a7ef9052222ae3bdeebafc39e3db06387993489888888c8cd53c22452085ccabc44e8a6503ad7e94ce73a9d1d77320cb3c45dbb76d0a2c535c7dbbe1dde7803264e8456adf23e5e11111191924209934821307bef6c8e271e674dc89aab77dabedd2c73f7e597d71ceb8f3fa0776f68d3065e7c316fe3141111112969f40c938893c525c73171c7449e6dfe2c7757bafbea1dc3c2a07163e8d8f1aa5d0c03faf7370be92d5902aeaef910b08888884809a2152611277bedabd7ccaf6d5ebb7aa7efbf375796962cb966f586f7de83fffd0f3efb0caa57cfdb38454444444a22254c4544878f3ad0e440131a556944a3cae6ab41e50694712fe3ecd0e4161c8c3bc8dcc8b9fcf7c1ff52c9bbd2d53b4e9d0ab7df6ed607bf8a0307cc036a870e85471ec98760454444444a20254c45c413773f41bc573c5f1efd92d97b676335ac00dc59e14ebb24aa519546d4f5a98b9bab9b9323961b317ae3686a56a8c9732d9fbb7aa71327ccaa78d3a7839be33fd79414080981800033b71211111191bca184a98818d87c204d9b360520352395837107f9e1dc0f1c38778003e70eb070ff4262936201707775a79e5f3dbb24aa51e546d42857038b0ee32934361cddc01747bf6055f02a3c4a795cbde3ac5950ae1cf4eb77d52ecf3f0fc78e416424787ae643b022222222259412a622c8cbcd8b66d59ad1ac5a33bbf63f52feb04ba20e9c3dc09a9fd77031fd2200e53dcad3b07243bb15a986951b52d1aba2336ea344cbb466326ae3281eb8e3011eabf7d8d53b2624c0fcf9e65ebb328eb75fae5e6d3ebb34772edc7d8d9a112222222272f394301523bea57d6953b30d6d6ab6b1b51986c1890b27cc44eaac9948ed3ab98bf7a3df27d39a09408d7235cc442ac78a547dbffad75ef5905b323f6a3e87e20eb16fc0be6baffacd99039999f09ce32d7b274f9a0b4f3d7ac08001f914ac8888884809a684a998b3582cd4ac50939a156ad22da09bad3d3d2b9d9fe37fb65b915afee372a6ee361f8071b5b852d7b76eae6d7d7756bc13178baad1df8a0b69177875fbabf4f9479f5cab84765253e1edb7a16f5fa85c39d7e5cc4cf3bca5b265cd4528edb614111111c97b4a984a287757773309aad28810426ced7f5efa931fcefd7039913a7b80597b6691909a004069b7d234a8d42057a189cadeb9dfd08b6393764e2225238549ed275dbbe3a245e629b4cf3fef789c49f0f5d7f0d5575051bb2a45444444f2851226b153cea31cad6e6b45abdb5ad9da0cc3203629d66e5b5fccef317c7ce063d232d300a8ec5d39d7b6be06951ae0edeeedac5b29948e9d3fc65b7bde626cebb1542f778d8392b2b260da3473af5d9d3ab92eefda05afbf0ee3c743ebd6f918b08888884809a78449aecb62b150ad6c35aa95ad46c7da1d6ded59d62c8e261cb5dbd6b7fec87adedef3360606162cdc59f14ebb2d7d8d2a37a2ae6f5d4ab994ccbf7aa19b42a954ba12a35b8dbe76c74f3f855f7e31cb895fe1fc79e8d5cb4c94c68dcba740454444440450c224b7c0d5c595bbfceee22ebfbbe871770f5b7b4a460a87e20ed955eb7b3ffa7d7e4ffa1d30b703d6f7ab9f6b5b5ff5b2d58b75d9f39d2776b2ead02a3e7af4a36bafbc1906848541bb76d0a245ae4b03064052122c5902aeaef91cb48888884809a78449f25c69b7d20ecb9ec7a7c4db6deb3b70ee00fffbe97f24a5270150c1b342ae6d7d0d2b37a482670567dc469eb21a56466e1849f36acd79aaf153d7eefcd557b06f1f7cf145ae4bf3e7c3aa556629f1db6ecba76045444444c44609931418bfd27eb4add996b635dbdadaac869593174eda25513b4eec607ef47cbbb2e7576eebabe757af48953d5ff2fd12a262a3d8d977e7f5ab0c868541a346d0a9935df38f3fc2f0e1f07fff078f5de3e82611111111c93b4a98c4a95c2c2eb6b2e7ddefea6e6bcf2e7b9e735bdf273f7c42d88530c02c7b1ee01b906b5b5fcd0a350b5dd9f3e4f4645edaf212417707d1faf6eb5468f8fe7b736569f162bb3ae1a9a9101202b56bc38c19f91cb088888888d894b88429323292891327b26fdf3e2e5cb8c0edb7df4eaf5ebd183d7a345e5e5eb67e870e1d62e4c8917cfdf5d7b8bbbbd3b56b5766cc98819f9f5fae31172c58c0b469d3387efc38b7dd761bc3860d63e8d0a1b9fa252626121a1acaa79f7e4a6a6a2a2d5bb664faf4e93469d2245fefb928ca59f63ca70b6917f831ee47bb15a94dbf6ce27cda7900bcddbc6950b941aef3a32a795772c66d00306df734e253e279f3c1376fa0f33473afdd134fd8358f1903478e983bf572fc3515111111917c56a212a603070ed0ba756baa55abc6881123f0f1f161f7eedd8c1f3f9ea8a828fef7bfff0170ead4291e78e0012a56acc8942953b878f122d3a64de3c08103ecddbb17373737db9873e7ce65d0a041040505317af46876ecd8c1b061c3484949213434d4d6cf6ab5d2b56b57befffe7b424343f1f5f565ce9c39b46ddb96a8a828ea38281d2db995f72cefb0ecf9998b67ecaaf545c746b3e4fb255ccaba049865cfafdcd67777a5bbf3bdecf9e93f4f13b63b8c11f78ca056c55ad7ee7cf2a459156fea54c8f177ecb3cfe0dd7761ce1c68d8305fc315111111912b94a884e9934f3e213d3d9d75ebd651bf7e7d00faf7ef8fd56ae5a38f3ee2c2850b942f5f9ec99327939a9acafefdfba951a306002d5bb6e4a1871ee2c30f3f64c0800100a4a6a6326edc38ba75ebc6f2e5cb01e8d7af1f56ab958913273270e0402a54300b16ac5cb9926fbef986952b57f2f8e38f03101c1c4c404000e3c78f67e9d2a505fde328362c160bd5cb55a77ab9ea74aa73f9b99f4c6b26bf24fc62b7ad6fede1b5bcf5ed5bb6b2e7b52ad6cab5adaf8e4f9d3c2b7b3e76eb58bcddbc19db7aecf53bcf9c0965cb42fffeb6a653a7e09967e0d147cd679744444444a46095a884297bcb5de5ca95eddaab56ad8aabab2beeeeee00ac5ab58a6eddbad99225800e1d3a101010c0f2e5cb6d09d3b66ddb48484860f0e0c176e30d193284a54b97b26edd3a9e7acaac88b672e54aaa56ad6a4b9600fcfcfc080e0e66c99225646464d8ad5cc9ad2be552ca56f63ce8ee205b7b727a3287e20fd96deb9b17358fb3c96701f070f5a07ea5fab9aaf5dd6cd9f3c833917cf4dd4784770da7bc67f96b774e48304be08d1c0965ca00e6d9b5bd7b43e9d2b06081dd234d2222222252404a54c2f4cc33cff0eebbefd2af5f3f264c9860db92f7de7bef316cd830bcbcbc387dfa34717171346fde3cd7f7b768d1822f72947adebf7f3f40aebe4d9b36c5c5c5859898185bc2b47fff7e9a366dea70cc79f3e671f8f0611a34689097b72b57e1edee4df36acd695ecdfecf2d2e39ce6e5bdf81b307587d6835c919c90054f4ac68963dcfb122d5b0724387c99061188cdc309206951ad0bf69ff5cd773090f87cc4c78075d8e0b0000200049444154ee395bd37fff0b3b77c2d6ade0e3736bf72c222222227f4f894a98aa55abc6d75f7fcdc30f3f6c5768e1e5975fe6f5d75f0720363616007f7fff5cdfefefef4f4242826d35283636165757d75c8520dcddddf1f5f5e5cc9933b6b6d8d858dab66deb704c803367ce5c33611a3162846d7b5fb6909010424242ae73d772a32a7957a2dd9ded6877673b5b9bd5b0723cf1b8ddf951db8f6f676ee45cb28c2c006e2b775bae24ea60dc41769ddcc586de1baebfbd2f3515de7e1bfaf685bf563f77ef86f1e3e1e597a14d9b7cbb6511111129a2222222888888b06b4b4c4c745234c55b894a98ce9e3d4b972e5d00983f7f3ebebebeac5dbb9649932651a54a15860c19426a6a2a001e1eb9cff8f1f4f404cc6797dcdcdc484d4db56de3bb928787876d2c80b4b4b4eb8e792db366cd72b84225f9cbc5e242ad8ab5a855b1168fdcf588adfd52e6257efee367bb6d7d1f1ff898dffefccdd6e7e1ba0fd3b176c7eb4ff2d147101707cf3f0f406222f4ea05f7dc03afbc92e7b724222222c580a30fcea3a3a369d6ac9993222abe4a54c23471e2444e9f3ecde1c387a956ad1a008f3efa2856ab95175e7881909010db734e972e5dcaf5fd696969c0e567a1bcbcbc484f4f7738575a5a9a5d99722f2faf1b1a538a068f521e34aed298c6551adbb55f48bbc00fe77ee0a7f89fe852b7cbf507caca324b89f7e80175ea60183070a099347df515942a51ff42454444440a9fc275c2673edbb56b174d9a34b1254bd9ba77ef4e4a4a0a313131b62d72d95bf3728a8d8dc5d7d7d7569cc1dfdf9facac2ce2e3e3edfaa5a7a793909060378fbfbfbfdd16bd9c6302b96292a2a9bc6779eebbfd3efa35ed47b5b237f067fabfffc1d1a3f05709fa850b61c50ab3fec31d77e473b022222222725d252a61cac8c8202b2bcb613b40666626d5ab57a752a54aecdbb72f57bfbd7bf712181868fb7df6735057f68d8c8cc46ab5daf50d0c0c243a3a1ac330ecfaeed9b3076f6f6f020202fefe8d49d16418f0e69bd0b62db468c1a143306c180c18003d7b3a3b381111111181129630356dda94e8e8688e1c3962d71e111181abab2b8d1b9bdbab7af4e8c1dab56b3975ea94adcf962d5b3872e4083d73bc936ddfbe3d3e3e3e848787db8d171e1e8eb7b7375dbb76b5b505050571f6ec5956af5e6d6b8b8f8f67c58a1574efde5d25c54ba2afbe827dfb203494b434080931579566cd7276602222222292ad443d213166cc1856ad5ac5fdf7dfcfd0a143f1f1f161eddab57cf9e5970c183080aa55ab023076ec5856ac5841bb76ed183e7c38172f5e64ead4a9346edc98be7dfbdac6f3f4f464e2c4890c193284e0e0603a76ecc8ce9d3b59ba742993274fb6ab6a171414c43df7dc43dfbe7d3978f020bebebecc993307c3309830614281ff2ca410080b83468da073675e18013ffd047bf698e72e8988888848e150a212a6c68d1bb37dfb76c68f1fcfd4a953494b4ba356ad5a4c9e3c99d0bf9e2101a851a3065f7df515a3468de2c5175fc4c3c3836eddba317dfaf45c2b4183060dc2cdcd8de9d3a7b366cd1a6ebffd7666cd9ac5b061c3ecfab9b8b8b07efd7ac68cf9fff6ee3e2caa3afffff80b1490504b665031333145b71bf3266f2b5771d54a30d710d7cddcca9b6f4a51bac5af7257bf45596dbabaeaa5ab659a097ed3b1bccd6e345cdd5221d4d5b2566d53435041241166e466ceef8f594647186f4a390c3c1fd7c525f399cf39bc0fe7f28217e773dee739cd9a354b76bb5d5dbb76d592254bd4a64d9b2a397e54237bf6481b3648efbda775ebfd346b96347bb674e79d661706000080f3f91917de54836aa5bc3d644646066dc56b929123a5cd9b95b5f57bdd7957807af49056af96fcfccc2e0c0000f82a7e6fbc366ad53d4c40b570e488b46c999ccf4cd4238f072830d0d51d8fb004000050fdd4aa257940b53073a6d4a08166148c566aaab4699364b59a5d140000002ac31526a02a9d3a252d58a0cc07c7ebff25d5d70b2f487dfa985d14000000bc2130015569de3c19a5a5faede74fa94b17e97fffd7ec8200000070312cc903aa8ac321e36f7fd3a6e68f6a7f4e13edde2cf1f82d000080ea8dc004549577df95727234eec41fb5e0ffa48808b30b020000c0a5109880aa5056a6e2d7a669bdff10f5fa431b0d1b667641000000b81c0426a00a94ac58a5c0c30795dc2245efce32bb1a0000005c2e021370ad1986b29f7943fff1ebad49abba2824c4ec8200000070b9e892075c63dbdfdca216c7d3953f26511d3b9a5d0d000000ae048109b8868e1d930afefc171d6a70bb1e9c779fd9e5000000e00ab1240fb8469c4e69f26ff76a41f1473afdd725f2f3f733bb240000005c21ae3001d7c8f4e9d2dddba7c91176931a8efd9dd9e5000000e067e00a13700da4a74b735ff85107fd5354e785bff0845a0000001f456002ae12bb5dfafc7369cd1ac966936687cd90bfa3be347ab4d9a5010000e067223001bfc0f1e3d2faf5ae90f4d96752519174cb2dd213c34ee977ef2e90df334f4b0d1a985d260000007e26021370050c43dab7cf1590d6ae95b66f778df7ec294d9922c5c448edda1af27b6dae54562a2524985b300000007e110213700925679ddaf6d129fd7355ae766fcc5149568e9a07e6e8c9d6397aab5fae6e6998a37aa773a4ffcb91e6e44a393992c321fdcfff484d9a985d3e0000007e0102136a9fe262e9e44957b039ff2337d7fd7969768ece1cce955f4e8e42ce9e542f95a9d779bb304afce477c222196152589864b54a1111aecfc3c2a4c68da5c1834d3b440000005c1d0426f836c3900a0b3dc2ce85e1a7c2eb9f7eaab89fc04095868629af4e987e2cb26a7f7e339d30ee54ddf030dddcc9aa5b7f1da688ae61f26bec0a447e8d1a4975ea54fdf1020000a04a119850bd389d527efee5879ff2e56f176ad0e0dcd51eab556adb56bae79e73afc3c2e4b484e95f59615af3a5552b3e6ea06ff6f92930508a8a92060d9286444b37dd54f5df02000000541f04265c5b25259e01e752e1e7e449a9accc731f7e7e92c5e21176d4b2a567202aff3c2ccc35b75ebd4acb292c94366e94d67c28ad5b279d38e19a1e1d2dbdf4b2d4bf3f4ded000000700e810957a6b0d07bd8a96ccccbf2378fb0131e2eb56f5f79f8b15aa5d0d05fb4fc2d3bdb158ed6ac71852587436ad74e7af4515757bb1e3d585d07000080ca11986ab3f397bf5d4ef8c9cd753d9df542e5cbdfcac34ef9f2b7cac24f58986bbe9fdf353b2cc390f6ee7505a4356ba4f474c9df5fbaf75ee995575c212932f29a7d79000000d42004a69aa47cf9dbe5869fdcdc2b5bfe565900b25abd2e7fab4ac5c5d23ffe712e241d39e2ca65f7dde77a14d2fdf7bb0e0b000000b812b52e303dfae8a35ab26489d7f78f1e3daaf0f07049d2b7df7eab091326e88b2fbe506060a0060e1ca8bffef5afb25aad15b65bb870a1a64d9ba643870ee9a69b6e524242829e7cf2c90af3f2f3f3959898a80f3ffc5076bb5d5dbb76d5f4e9d3d5b163c78b17fec517d2d75f5ffc3ea0fcfc8adb952f7f2b0f3be5cbdf2e0c3f5769f95b55cacb933efac815903efe582a28905ab470356c183448faf5af5d870f000000fc5cb52e303df1c413eadfbfbfc798d3e9d4134f3ca18888087758cacccc54af5ebdd4a85123bdf6da6b2a2828d0b469d3b477ef5ea5a5a5292020c0bdfdfcf9f3356edc38c5c6c6ead9679fd5962d5b949090a0a2a2222526267a7c9d8103076acf9e3d4a4c4c94c562d1dcb973d5bb776f656464a875ebd6de0b4f4870fd5bcd96bf55b50307ce5d45fae20bd705b22e5da4c444d752bbf6ed6bd4e1020000c064b52e3075efde5dddbb77f718fbe73fffa9a2a2223dfcf0c3eeb1a953a7ca6eb76bd7ae5d6adebcb924a96bd7aeead7af9f162f5eac3163c64892ec76bb264d9aa4e8e8682d5fbe5c92346ad428399d4e25252569ecd8b1bae1861b2449369b4ddbb66d93cd66d390214324497171718a8c8cd4942953949c9cecbdf08f3e92faf4a916cbdfaa525999b46d9b2b20ad5d2b7df79deb5bf09bdf4873e7babadb356b667695000000a8a9fccd2ea03a484949919f9f9f7efffbdfbbc756ae5ca9e8e868775892a4be7dfb2a3232d21d8c24293535557979791a3f7ebcc73ee3e3e3555858a8f5ebd7bbc76c369b9a366dea0e4b9264b55a151717a7d5ab57aba4a4c47b914d9ad49ab0545020ad5ce9ea62d7b4a9ab59c3bbef4a3d7b4aab56b95620ae5d2b8d1d4b58020000c0b555eb0353494989962f5faebbefbe5b2d5ab490e4ba8f2927274777dd755785f95dba74d1ae5dbbdcafcb3fbf706ea74e9de4efefafddbb777bccedd4a953a5fb2c2a2ad2fefdfbafca31f9a2cc4c69de3c577306ab558a8d95befa4a1a33c67585293b5b5ab8507af0412924c4ec6a010000505bd4ba257917fae4934f949797e7b11c2f3b3b5b92dcf7339d2f3c3c5c7979792a292951404080b2b3b355a74e9d0a8d2002030365b158949595e5b1dfdebd7b57ba4f49cacacad26db7dd56699dcf3cf38c7b695fb9e1c3876bf8f0e19777a0d58c6148bb769dbb1f69d72ea96e5da9572fe92f7f71dd8fd4aa95d955020000544fcb962dd3b265cb3cc6f22b6b00865facd607a69494140506062a2e2ece3d66ffefb3868282822accaff7df657176bb5d010101b2dbed0af4d28a2d2828c8bd2f4972381c97dca7373367ceacf4ea942f7138a4d4d473f7231d3d2a5d7fbdf4c003aea60df7dd275d90090100005089cafe70be73e74e75eedcd9a48a6aae5a1d98ce9c39a3d5ab576bc080016ad4a8917b3c3838589274f6ecd90adb381c0e8f39c1c1c12a2e2eae74ff0e87c33daf7ceee5ecb326c9c991d6af7705a44f3e910a0ba5880869e850d755a47bef95ce6b3808000000542bb53a30ad5ab54a76bbdd63399e746e895cf9d2bcf3656767cb62b1b8db8a878787abacac4cb9b9b91ecbf28a8b8b959797a766e77525080f0ff758a277fe3e2579ccf55586e1ea64b776adeb4ad2975fbac6bb7593264d723d1fe9d65b69fd0d000000df50ab03537272b21a3468a0418306798cdf78e38d0a0b0b537a7a7a856dd2d2d2d4a14307f7ebf207cea6a7a7ebfefbef778f7ff5d557723a9d1e733b74e8a0ad5bb7ca300cf99d971876ecd8a19090104546465eb563ab4aa5a5ae672295df8f74f0a0141c2cf5ef2fbdfdb63470a0abc91f000000e06b6a6d97bc9c9c1c6ddcb851bffded6fddf7109defa1871ed2ba75eb949999e91edbb469930e1c38a0a14387bac7a2a2a2141a1aaa79f3e6796c3f6fde3c85848468e0c081eeb1d8d8581d3f7e5c1f7cf0817b2c3737572b56ac504c4c8cc7c370abbb9f7e92962f97468c901a37967af796962d93a2a2a475eba493275d2dc01f7f9cb004000000df556baf30bdfffefb2a2b2babb01cafdc8b2fbea8152b56a84f9f3e7afae9a7555050a037df7c53eddbb7d7638f3de69e57af5e3d252525293e3e5e717171eadfbfbfb66eddaae4e4644d9d3ad5a3b35d6c6cacba77efaec71e7b4cfbf6ed93c562d1dcb9736518865e7ae9a56b7eccbfd4a143e796da6ddeecbab274e79dd2934fba96da75ea24f9d7da080e0000809aa8d606a69494143569d244bff9cd6f2a7dbf79f3e6fac73ffea1891327eaf9e79f57505090a2a3a3357dfaf40a5782c68d1ba78080004d9f3e5d6bd6ac518b162d3473e64c25242478ccf3f7f7d7471f7da4e79e7b4eb366cd92dd6e57d7ae5db564c912b569d3e69a1debcfe574ba9e8554bed46eef5e5783863e7da49933a5e868e9e69bcdae12000000b876fc0cc330cc2e02de95b787ccc8c8a892b6e24545d2a64dae80b46e9d74ec98141aeaba0f2926461a30406ad8f09a97010000802b54d5bf37d616b5f60a13ce3976ccd5fa7bcd1ae9b3cf24bb5d6ad3467af861d752bb9e3d5d0f95050000006a1b7e0dae850c43fae69b734bed76ec70dd7bd4b3a7f4d24bae90d4b6add95502000000e62330d5122525d2962de742d2a14352488874df7dd2f8f1d2030f48e73d460a00000080084c35daa953d2860dae80f4f1c7ae56e0cd9bbbae20c5c4b85a8157d2511d000000c07f11986a98efbf7705a4b56b5d5794cacaa4ce9da509135c41a94307e9bc67e602000000b80802938f2b2b73dd8354fe7ca47dfba4a020d70364e7cc71b5fe6ededcec2a01000000df4460f2418585ae6e76e5adbf7372a4b03057ebef575e91faf593ead737bb4a000000c0f711987cc48913d2fcf9ae90b4699374f6acf4ab5f498f3fee5a6ad7ad9b54a78ed95502000000350b81c947dc7fbf2b10dd7baff4da6baea60dad5b9b5d1500000050b311987c445292abfd7768a8d99500000000b587bfd905e0f23cf0006109000000a86a042600000000f082c004000000005e109800000000c00b02130000000078416002000000002f084c00000000e005810900000000bc2030010000008017042600000000f082c004000000005e109800000000c00b02130000000078416002000000002f084cc035b06cd932b34bc015e29cf91ece99efe19cf91ece19504b03d3ce9d3b3568d020592c16858484e88e3beed0ecd9b33de67cfbedb7baefbefbd4a04103592c168d1c3952b9b9b995ee6fe1c285fad5af7ea5e0e0604546466ace9c3995cecbcfcfd7d8b163151616a6faf5eb2b2a2a4abb76edbaeac707f3f103c6f770ce7c0fe7ccf770ce7c0fe70c90ea9a5d4055fbf4d34f151313a3ce9d3b6bf2e4c9aa5fbfbe0e1e3ca8a3478fbae7646666aa57af5e6ad4a8915e7bed3515141468dab469dabb77afd2d2d2141010e09e3b7ffe7c8d1b374eb1b1b17af6d967b565cb16252424a8a8a848898989ee794ea75303070ed49e3d7b949898288bc5a2b973e7aa77efdecac8c850ebd6adabf4fb00000000e0d26a55603a7dfab4468e1ca9989818d96c36aff3a64e9d2abbddae5dbb76a979f3e692a4ae5dbbaa5fbf7e5abc78b1c68c192349b2dbed9a346992a2a3a3b57cf97249d2a851a3e4743a959494a4b163c7ea861b6e9024d96c366ddbb64d369b4d43860c9124c5c5c52932325253a64c517272f2b53c74000000003f43ad5a92979292a213274ee8d5575f9524151616cae9745698b772e54a454747bbc39224f5eddb57919191ee602449a9a9a9cacbcbd3f8f1e33db68f8f8f576161a1d6af5fef1eb3d96c6adab4a93b2c4992d56a555c5c9c56af5ead929292ab769c00000000ae8e5a758569e3c68d6ad8b0a17efcf1470d1a3448070e1c504848881e79e411cd9831434141413a7af4a872727274d75d7755d8be4b972edab06183fb75f9fd4717ceedd4a993fcfdfdb57bf76e3dfcf0c3eeb99d3a75aa749f0b162cd0fefdfb75db6db75578dfe1704872dd5305df919f9faf9d3b779a5d06ae00e7ccf770ce7c0fe7ccf770ce7c4bf9ef8b76bbdde44a6a965a15980e1c38a0d2d2520d1e3c58a3478fd61b6fbca1d4d454cd9e3d5bf9f9f94a4949517676b624293c3cbcc2f6e1e1e1cacbcb53494989020202949d9dad3a75eac86ab57acc0b0c0c94c562515656967b2c3b3b5bbd7bf7ae749f92949595556960fae1871f244923468cf8d9c70d7374eedcd9ec1270853867be8773e67b3867be8773e67b0e1d3aa4bbefbedbec326a8c5a1598ce9c39a3a2a2228d1b374e3367ce94240d1e3c58c5c5c59a3f7fbe5e7ef96577220f0a0aaab07dbd7af524b9527b404080ec76bb0203032bfd5a4141411ee9dee1705c729f9519306080962e5daa962d5b2a3838f80a8e16000000b589c3e1d00f3ffca0010306985d4a8d52ab025379e0183e7cb8c7f8f0e1c3357ffe7c6ddfbe5deddab593249d3d7bb6c2f6e5cbe3caf7131c1cace2e2e24abf96c3e1f00838c1c1c197b5cf0b59ad56f7b23e000000e0627af6ec697609354ead6afad0ac5933495293264d3cc61b376e2c493a75ea947b4ef9d2bcf3656767cb62b1b8db8a878787abacacacc2f3998a8b8b959797e7de57f9dcf397e89dbfcff36b03000000507dd4aac054de9c213333d363bc3cc8848585a959b3660a0b0b537a7a7a85edd3d2d2d4a14307f7eb8e1d3b4a5285b95f7df5959c4ea7c7dc0e1d3a68e7ce9d320cc363ee8e1d3b141212a2c8c8c85f706400000000ae855a1598e2e2e224490b172ef4187ffbedb7151010e06ecaf0d0430f69ddba751ec16ad3a64d3a70e080860e1dea1e8b8a8a526868a8e6cd9be7b1bf79f3e62924244403070e748fc5c6c6eaf8f1e3fae0830fdc63b9b9b95ab162856262623c1e860b000000a07af0332ebce451c38d1e3d5aefbcf38ee2e2e2d4ab572f6ddebc59369b4d2fbef8a25e79e51549ae2b501d3b76d40d37dca0a79f7e5a0505057af3cd37d5a2450ba5a7a77b849b79f3e6293e3e5eb1b1b1eadfbfbfb66eddaaf7de7b4f53a74ed5f3cf3fef9ee7743a75cf3df7e8ebafbfd673cf3d278bc5a2b973e72a333353e9e9e96ad3a64d957f2f000000005c8251cb949494182fbdf492d1b2654b233030d0888c8c34fef6b7bf5598f7cd37df1803060c304242428cd0d050e391471e314e9c3851e93edf7aeb2da35dbb7646505090d1a64d9b4af767188671ead42963f4e8d186d56a354242428c3e7dfa1819191995ce75381c466262a2111e1e6e0407071bddba75333efbecb39f7fe0b8e6ce9c39634c9e3cd918306080d1a85123c3cfcfcf58bc78b1d965e122d2d2d28cf8f878e3d65b6f354242428c162d5a18717171c6fefdfbcd2e0d5e7cfdf5d7466c6cacd1aa552be3baebae334243438d1e3d7a184b972e35bb345ca6575e79c5f0f3f3336ebffd76b34b8117a9a9a9869f9f5fa51f3b76ec30bb3c5c44464686111313638486861ad75d779d71fbedb71bb366cd32bb2c9f57ebae30f98ae1c3876be5ca959a306182dab469a3458b16293d3d5da9a9a9f4d5afa60e1d3aa456ad5ae9e69b6f56444484366fdeacc58b176be4c8916697062f626363b56ddb360d1d3a54eddbb7577676b6e6cc99a33367ce68fbf6ed953e1b0de6dab0618366cd9aa59e3d7baa59b3662a2a2a92cd66d3d6ad5b959494a4499326995d222e223333536ddbb695bfbfbf222222b467cf1eb34b4225366fdeaca8a8283dfdf4d3ead2a58bc77b03060c90c56231a9325ccca79f7eaa98981875eedc59c3860d53fdfaf575f0e0411986a1d75f7fddecf27c1a81a91a4a4b4b53f7eedd356dda344d9c385192abcdf9edb7dfaec68d1beb8b2fbe30b94254a6b8b858f9f9f96adcb8b1323232d4a54b17025335b76ddb3675e9d24575eb9e7bc2c2c1830775c71d7728363656efbdf79e89d5e172399d4e75eedc597979793a7cf8b0d9e5e0227ef7bbdfe9e4c9932a2d2d556e6eaef6eedd6b7649a8447960b2d96c1a326488d9e5e0329c3e7d5a919191bae79e7b64b3d9cc2ea7c6a9554d1f7c85cd6653ddba753576ec58f758505090468d1aa56ddbb6e9e8d1a32656076f020303dd2deaf93b846fe8d1a387475892a4d6ad5bebd65b6fd577df7d675255b852fefefe6adebc39cd73aab92d5bb668e5ca959a3973a60cc3909f9f9fd925e1120cc3504141814a4b4bcd2e0597909292a213274ee8d5575f9524151616cae9749a5c55cd4160aa8676eddaa5c8c848d5af5fdf63bcfcb2f8eeddbbcd280ba8150cc3d0f1e3c765b55acd2e0517515454a4dcdc5c7dfffdf79a3163863ef9e4132526269a5d16bc282b2bd3534f3da53163c6b0d4d5873cf6d863bafefaeb151c1caca8a828656464985d12bcd8b871a31a366ca81f7ffc516ddbb65583060d74fdf5d76bfcf8f13a7bf6acd9e5f9bcba979e82aa969d9dadf0f0f00ae3e563953d0017c0d5919c9cacacac2c77d74c544f13274ed482050b244975ebd6d5ac59b33caecaa37af9fbdfffae23478ee8f3cf3f37bb145c86a0a020c5c6c6ea81071e90d56ad537df7ca369d3a6e9de7befd5975f7ee9f19c49540f070e1c506969a9060f1eacd1a347eb8d37de506a6aaa66cf9eadfcfc7ca5a4a4985da24f2330554376bb5d41414115c6ebd5abe77e1fc0d5f7dd77df293e3e5e3d7bf6d41ffef007b3cbc1454c983041717171cacaca527272b29e7cf24905070773deaaa193274f6af2e4c99a3c7932cd027c448f1e3dd4a3470ff7ebe8e868c5c6c6aa7dfbf67ae18517b461c30613ab4365ce9c39a3a2a2228d1b374e3367ce94240d1e3c58c5c5c59a3f7fbe5e7ef965b56edddae42a7d174bf2aaa1e0e0e04a2f9f3a1c0ef7fb00aeae63c78e69e0c0816ad4a8916c361bf75754736ddbb655545494468c18a10d1b36a86fdfbe7ae69967f8835235f4a73ffd4956ab554f3df594d9a5e017b8e5965bf4e0830f2a353595fb74aba1f2df0d870f1fee315efe7afbf6ed555e534d4260aa86c2c3c32b5d76979d9d2d496ad6ac59559704d4683ffdf493eebfff7e9d3e7d5a1f7ffcb19a366d6a7649b8420f3df4907efae927fdfbdfff36bb149ce7c081037aebadb7f4d4534f29333353870e1dd2a14387e47038545c5cacc3870febd4a953669789cbd4bc7973151717abb0b0d0ec527081f2df0d9b3469e2315ede8c8aff67bf0c81a91aead8b1a3f6efdfaf8282028ff11d3b7648126b8781abc8e17028262646070f1ed4ba75ebd4ae5d3bb34bc2cf507e65c9df9f1f6bd5c9d1a347e5743a959090a056ad5ab93fd2d2d2b47fff7e454444282929c9ec327199fef39fff283838b842532a98efaebbee92e47ad6d9f9caff001f161656e535d524fc64a986626363555656e6bea159723d8769d1a245eadebdbb6ebcf14613ab036a8eb2b2320d1b364c3b76ecd08a152bd4ad5b37b34bc225e4e4e454182b2929d192254b64b158e8c056cddc71c71dfaf0c30fb56ad52af7c7871f7ea8db6ebb4d37df7cb356ad5aa551a346995d262e50d9ffb37ffdeb5f5ab3668dfaf7ef6f4245b894b8b83849d2c2850b3dc6df7efb6d050404a877efde26545573d0f4a11aeadab5ab860e1daa175e7841274e9cd02db7dca277df7d57478e1cd1a2458bcc2e0f173167ce1ce5e7e7bbffa2b366cd1a1d39724492949090a0860d1b9a591e2ef0c73ffe516bd7ae554c4c8c727373b574e9528ff7478c18615265f066ecd8b12a282850af5ebdd4ac59331d3b764cc9c9c9dabf7fbf162d5aa43a75ea985d22ce63b158f4e0830f56189f3163862469d0a041555d122ec3b061c374dd75d7a9478f1e6adcb8b1f6eddba7050b16a87efdfa7afdf5d7cd2e0f95e8d0a1831e7ffc71bdf3ce3b2a2d2d55af5ebdb479f366d96c36bdf8e28b2c35ff85fc0ceedcab96ce9e3dab3ffff9cf5aba74a94e9d3aa53befbc53494949ead7af9fd9a5e12222222274f8f0614972370d287f40e30f3ffca0162d5a98591e2ed0a74f1f6dd9b2a5d21b98fdfcfc545656664255b898f7df7f5f0b172ed4debd7b75f2e449356cd850ddba75d3c48913d5b76f5fb3cbc365ead3a78f4e9e3ca93d7bf6985d0a2a317bf66c252727ebe0c1833a7dfab41a376eacbe7d09dc4a7c000000ef49444154fb6aca94296ad5aa95d9e5c18bd2d2524d9d3a558b162d525656965ab66ca9f8f878252424985d9acf2330010000008017dcc304000000005e109800000000c00b02130000000078416002000000002f084c00000000e005810900000000bc2030010000008017042600000000f082c004000000005e109800000000c00b02130000000078416002000000002f084c00000000e005810900000000bc2030010000008017042600000000f082c004000000005e109800000000c00b02130000000078416002000000002f084c00000000e005810900000000bc2030010000008017042600000000f0e2ff03bd8a08617178b60c0000000049454e44ae426082}\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u32467?\u26524?\u27491?\u22909?\u19982?\u25105?\u30340?\u24773?\u20917?\u30456?\u21453?\u65311?\u20284?\u20046?\u22270?\u19978?\u26159?\u36825?\u20040?\u35828?\u30340?\u65292?\u20294?\u26159?\u25968?\u25454?\u19978?\u26159?\u36825?\u26679?\u30340?\u24773?\u20917?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 data\line +\u9500?\u9472?\u9472? 2014-01-01-0.json\line +\u9500?\u9472?\u9472? 2014-02-01-0.json\line +\u9500?\u9472?\u9472? 2014-02-02-0.json\line +\u9500?\u9472?\u9472? 2014-02-03-0.json\line +\u9500?\u9472?\u9472? 2014-02-04-0.json\line +\u9500?\u9472?\u9472? 2014-02-05-0.json\line +\u9500?\u9472?\u9472? 2014-02-06-0.json\line +\u9500?\u9472?\u9472? 2014-02-07-0.json\line +\u9500?\u9472?\u9472? 2014-02-08-0.json\line +\u9500?\u9472?\u9472? 2014-02-09-0.json\line +\u9500?\u9472?\u9472? 2014-02-10-0.json\line +\u9500?\u9472?\u9472? 2014-02-11-0.json\line +\u9500?\u9472?\u9472? 2014-02-12-0.json\line +\u9500?\u9472?\u9472? 2014-02-13-0.json\line +\u9500?\u9472?\u9472? 2014-02-14-0.json\line +\u9500?\u9472?\u9472? 2014-02-15-0.json\line +\u9500?\u9472?\u9472? 2014-02-16-0.json\line +\u9500?\u9472?\u9472? 2014-02-17-0.json\line +\u9500?\u9472?\u9472? 2014-02-18-0.json\line +\u9500?\u9472?\u9472? 2014-02-19-0.json\line +\u9492?\u9472?\u9472? 2014-02-20-0.json\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u25105?\u20204?\u33719?\u21462?\u26159?\u27599?\u22825?\u26202?\u19978?0\u28857?\u26102?\u30340?\u24773?\u20917?\u65292?\u33267?\u20110?\u20026?\u20160?\u20040?\u26159?0\u28857?\u65292?\u25105?\u24819?\u36825?\u37324?\u30340?\u25968?\u25454?\u37327?\u21487?\u33021?\u20250?\u27604?\u36739?\u23569?\u12290?\u38500?\u21435?1\u26376?1\u21495?\u30340?\u24773?\u20917?\u65292?\u23601?\u26159?\u19978?\u38754?\u30340?\u32467?\u26524?\u65292?\u22312?\u21482?\u26377?\u19968?\u21608?\u30340?\u24773?\u20917?\u26102?\u65292?\u24635?\u20250?\u20197?\u20026?\u22240?\u20026?\u22312?\u22269?\u20869?\u37027?\u26102?\u26159?\u20551?\u26399?\u65292?\u20294?\u26159?\u24635?\u35273?\u24471?\u19981?\u26159?\u24456?\u38752?\u35889?\u65292?\u22269?\u20869?\u30340?\u31243?\u24207?\u21592?\u34429?\u28982?\u24456?\u22810?\u65292?\u20250?\u22312?github\u19978?\u27963?\u36291?\u30340?\u21487?\u33021?\u27809?\u26377?\u37027?\u20040?\u22810?\u65292?\u30452?\u33267?\u21015?\u20986?\u27599?\u19968?\u21608?\u30340?\u25968?\u25454?\u26102?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 6570, 7420, 11274, 12073, 12160, 12378, 12897,\line + 8474, 7984, 12933, 13504, 13763, 13544, 12940,\line + 7119, 7346, 13412, 14008, 12555\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 Python \u25968?\u25454?\u20998?\u26512?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u37325?\u20889?\u20102?\u19968?\u20010?\u26032?\u30340?\u26041?\u27861?\u29992?\u20110?\u35745?\u31639?\u25552?\u20132?\u25968?\u65292?\u30452?\u33267?\u21518?\u38754?\u25165?\u24847?\u35782?\u21040?\u20854?\u23454?\u25105?\u20204?\u21487?\u20197?\u31639?\u34892?\u25968?\u23601?\u22815?\u20102?\u65292?\u20294?\u26159?\u26041?\u27861?\u19978?\u26377?\u28857?hack\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 def get_minutes_counts_with_id(jsonfile):\line + datacount, dataarray = handle_json(jsonfile)\line + minuteswithcount = [(x, dataarray.count(x)) for x in set(dataarray)]\line + return minuteswithcount\line +\line +\line +def handle_json(jsonfile):\line + f = open(jsonfile, "r")\line + dataarray = []\line + datacount = 0\line +\line + for line in open(jsonfile):\line + line = f.readline()\line + lin = json.loads(line)\line + date = dateutil.parser.parse(lin["created_at"])\line + datacount += 1\line + dataarray.append(date.minute)\line +\line + f.close()\line + return datacount, dataarray\line +\line +\line +def get_minutes_count_num(jsonfile):\line + datacount, dataarray = handle_json(jsonfile)\line + return datacount\line +\line +\line +def get_month_total():\line + """\line +\line + :rtype : object\line + """\line + monthdaycount = []\line + for i in range(1, 20):\line + if i < 10:\line + filename = 'data/2014-02-0' + i.__str__() + '-0.json'\line + else:\line + filename = 'data/2014-02-' + i.__str__() + '-0.json'\line + monthdaycount.append(get_minutes_count_num(filename))\line + return monthdaycount\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u25509?\u30528?\u25105?\u20204?\u38656?\u35201?\u21435?\u36941?\u21382?\u27599?\u20010?\u32467?\u26524?\u65292?\u21518?\u38754?\u30340?\u21518?\u38754?\u20250?\u21457?\u29616?\u36825?\u20010?\u25928?\u29575?\u30495?\u30340?\u26159?\u22826?\u20302?\u20102?\u65292?\u20026?\u20160?\u20040?\u26408?\u26377?\u22810?\u32447?\u31243?\u65311?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 Python Matplotlib\u22270?\u34920?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u35753?\u25105?\u20204?\u30340?matplotlib\u26469?\u20570?\u36825?\u20123?\u22270?\u34920?\u30340?\u24037?\u20316?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 if __name__ == '__main__':\line + results = pd.get_month_total()\line + print results\line +\line + plt.figure(figsize=(8, 4))\line + plt.plot(results.__getslice__(0, 7), label="first week")\line + plt.plot(results.__getslice__(7, 14), label="second week")\line + plt.plot(results.__getslice__(14, 21), label="third week")\line + plt.legend()\line + plt.show()\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u34013?\u33394?\u30340?\u26159?\u31532?\u19968?\u21608?\u65292?\u32511?\u33394?\u30340?\u26159?\u31532?\u20108?\u21608?\u65292?\u34013?\u33394?\u30340?\u26159?\u31532?\u19977?\u21608?\u23601?\u26377?\u20102?\u19978?\u38754?\u30340?\u32467?\u26524?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u25105?\u20204?\u36824?\u38656?\u35201?\u20248?\u21270?\u26041?\u27861?\u65292?\u20197?\u21450?\u22810?\u32447?\u31243?\u30340?\u25903?\u25345?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs36 Github\u39033?\u30446?\u20998?\u26512?\u20108?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u35753?\u25105?\u20204?\u20998?\u26512?\u20043?\u21069?\u30340?\u31243?\u24207?\u65292?\u28982?\u21518?\u20877?\u24819?\u21150?\u27861?\u20570?\u20986?\u20248?\u21270?\u12290?\u32593?\u19978?\u30475?\u21040?\u19968?\u31687?\u25991?\u31456?{\field{\*\fldinst{HYPERLINK "http://www.huyng.com/posts/python-performance-analysis/"}}{\fldrslt{\ul +http://www.huyng.com/posts/python-performance-analysis/ +}}} +\u35762?\u30340?\u23601?\u26159?\u20998?\u26512?\u36825?\u37096?\u20998?\u20869?\u23481?\u30340?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 Time Python\u20998?\u26512?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u20998?\u26512?\u31243?\u24207?\u30340?\u36816?\u34892?\u26102?\u38388?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 $time python handle.py\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u32467?\u26524?\u20415?\u26159?\u65292?\u20294?\u26159?\u23545?\u20110?\u25105?\u20204?\u30340?\u20998?\u26512?\u27809?\u26377?\u19968?\u28857?\u24847?\u20041?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 real 0m43.411s\line + user 0m39.226s\line + sys 0m0.618s\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 line_profiler python\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 sudo ARCHFLAGS="-Wno-error=unused-command-line-argument-hard-error-in-future" easy_install line_profiler\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u28982?\u21518?\u22312?\u25105?\u20204?\u30340?{\f1 parse_data.py}\u30340?{\f1 handle_json}\u21069?\u38754?\u21152?\u19978?{\f1 @profile}\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 @profile\line +def handle_json(jsonfile):\line + f = open(jsonfile, "r")\line + dataarray = []\line + datacount = 0\line +\line + for line in open(jsonfile):\line + line = f.readline()\line + lin = json.loads(line)\line + date = dateutil.parser.parse(lin["created_at"])\line + datacount += 1\line + dataarray.append(date.minute)\line +\line + f.close()\line + return datacount, dataarray\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Line_profiler\u24102?\u20102?\u19968?\u20010?\u20998?\u26512?\u33050?\u26412?{\f1 kernprof.py}\u65292?so\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 kernprof.py -l -v handle.py\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u25105?\u20204?\u20415?\u20250?\u24471?\u21040?\u19979?\u38754?\u30340?\u32467?\u26524?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 Wrote profile results to handle.py.lprof\line +Timer unit: 1e-06 s\line +\line +File: parse_data.py\line +Function: handle_json at line 15\line +Total time: 127.332 s\line +\line +Line # Hits Time Per Hit % Time Line Contents\line +==============================================================\line + 15 @profile\line + 16 def handle_json(jsonfile):\line + 17 19 636 33.5 0.0 f = open(jsonfile, "r")\line + 18 19 21 1.1 0.0 dataarray = []\line + 19 19 16 0.8 0.0 datacount = 0\line + 20\line + 21 212373 730344 3.4 0.6 for line in open(jsonfile):\line + 22 212354 2826826 13.3 2.2 line = f.readline()\line + 23 212354 13848171 65.2 10.9 lin = json.loads(line)\line + 24 212354 109427317 515.3 85.9 date = dateutil.parser.parse(lin["created_at"])\line + 25 212354 238112 1.1 0.2 datacount += 1\line + 26 212354 260227 1.2 0.2 dataarray.append(date.minute)\line + 27\line + 28 19 349 18.4 0.0 f.close()\line + 29 19 20 1.1 0.0 return datacount, dataarray\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u20110?\u26159?\u25105?\u20204?\u23601?\u21457?\u29616?\u25105?\u20204?\u30340?\u29942?\u39048?\u23601?\u26159?\u20174?\u35835?\u21462?{\f1 created_at}\u65292?\u21363?\u21019?\u24314?\u26102?\u38388?\u12290?\u12290?\u12290?\u20197?\u21450?\u35299?\u26512?json\u65292?\u21453?\u32780?\u19981?\u26159?\u25105?\u20204?\u20851?\u24515?\u30340?IO\u65292?\u26524?\u28982?{\f1 readline}\u24456?\u24378?\u22823?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 memory_profiler\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u39318?\u20808?\u25105?\u20204?\u38656?\u35201?install memory_profiler:\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 $ pip install -U memory_profiler\line +$ pip install psutil\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u22914?\u19978?\u65292?\u25105?\u20204?\u21482?\u38656?\u35201?\u22312?{\f1 handle_json}\u21069?\u38754?\u21152?\u19978?{\f1 @profile}\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 python -m memory_profiler handle.py\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u20110?\u26159?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 Filename: parse_data.py\line + \line +Line # Mem usage Increment Line Contents\line +================================================\line + 13 39.930 MiB 0.000 MiB @profile\line + 14 def handle_json(jsonfile):\line + 15 39.930 MiB 0.000 MiB f = open(jsonfile, "r")\line + 16 39.930 MiB 0.000 MiB dataarray = []\line + 17 39.930 MiB 0.000 MiB datacount = 0\line + 18\line + 19 40.055 MiB 0.125 MiB for line in open(jsonfile):\line + 20 40.055 MiB 0.000 MiB line = f.readline()\line + 21 40.066 MiB 0.012 MiB lin = json.loads(line)\line + 22 40.055 MiB -0.012 MiB date = dateutil.parser.parse(lin["created_at"])\line + 23 40.055 MiB 0.000 MiB datacount += 1\line + 24 40.055 MiB 0.000 MiB dataarray.append(date.minute)\line + 25\line + 26 f.close()\line + 27 return datacount, dataarray\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 objgraph python\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u23433?\u35013?objgraph\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 pip install objgraph\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u25105?\u20204?\u38656?\u35201?\u35843?\u29992?\u20182?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 import pdb;\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u20197?\u21450?\u22312?\u38656?\u35201?\u35843?\u24230?\u30340?\u22320?\u26041?\u21152?\u19978?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 pdb.set_trace()\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u25509?\u30528?\u20250?\u36827?\u20837?{\f1 command}\u27169?\u24335?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 (pdb) import objgraph\line +(pdb) objgraph.show_most_common_types()\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u28982?\u21518?\u25105?\u20204?\u21487?\u20197?\u25214?\u21040?\u12290?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 function 8259\line +dict 2137\line +tuple 1949\line +wrapper_descriptor 1625\line +list 1586\line +weakref 1145\line +builtin_function_or_method 1117\line +method_descriptor 948\line +getset_descriptor 708\line +type 705\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u20063?\u21487?\u20197?\u29992?\u20182?\u29983?\u25104?\u22270?\u24418?\u65292?\u35980?\u20284?\u36825?\u37324?\u26159?\u29992?{\f1 dot}\u29983?\u25104?\u30340?\u65292?\u21152?\u19978?{\f1 python-xdot}\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u24456?\u26126?\u26174?\u30340?\u25105?\u20204?\u38656?\u35201?\u19968?\u20010?\u25968?\u25454?\u24211?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u22914?\u26524?\u25105?\u20204?\u27599?\u27425?\u37117?\u35201?\u33457?\u21516?\u26679?\u30340?\u26102?\u38388?\u21435?\u20570?\u19968?\u20214?\u20107?\u65292?\u21435?\u25195?\u37027?\u20123?\u25968?\u25454?\u30340?\u35805?\u65292?\u37027?\u20040?\u36825?\u26159?\u26368?\u22909?\u30340?\u25171?\u21457?\u26102?\u38388?\u30340?\u26041?\u27861?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 python SQLite3 \u26597?\u35810?\u25968?\u25454?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u25105?\u20204?\u21019?\u24314?\u20102?\u19968?\u20010?\u21517?\u20026?{\f1 userdata.db}\u30340?\u25968?\u25454?\u24211?\u25991?\u20214?\u65292?\u28982?\u21518?\u21019?\u24314?\u20102?\u19968?\u20010?\u34920?\u65292?\u37324?\u38754?\u26377?owner,language,eventtype,name url\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 def init_db():\line + conn = sqlite3.connect('userdata.db')\line + c = conn.cursor()\line + c.execute('''CREATE TABLE userinfo (owner text, language text, eventtype text, name text, url text)''')\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u25509?\u30528?\u25105?\u20204?\u23601?\u21487?\u20197?\u26597?\u35810?\u25968?\u25454?\u65292?\u36825?\u37324?\u20174?\u32467?\u26524?\u35762?\u36215?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 def get_count(username):\line + count = 0\line + userinfo = []\line + condition = 'select * from userinfo where owener = \\'' + str(username) + '\\''\line + for zero in c.execute(condition):\line + count += 1\line + userinfo.append(zero)\line +\line + return count, userinfo\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u24403?\u25105?\u26597?\u35810?{\f1 gmszone}\u30340?\u26102?\u20505?\u65292?\u20063?\u23601?\u26159?\u25105?\u33258?\u24049?\u23601?\u20250?\u26377?\u22914?\u19979?\u30340?\u32467?\u26524?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 (u'gmszone', u'ForkEvent', u'RESUME', u'TeX', u'https://github.com/gmszone/RESUME')\line +(u'gmszone', u'WatchEvent', u'iot-dashboard', u'JavaScript', u'https://github.com/gmszone/iot-dashboard')\line +(u'gmszone', u'PushEvent', u'wechat-wordpress', u'Ruby', u'https://github.com/gmszone/wechat-wordpress')\line +(u'gmszone', u'WatchEvent', u'iot', u'JavaScript', u'https://github.com/gmszone/iot')\line +(u'gmszone', u'CreateEvent', u'iot-doc', u'None', u'https://github.com/gmszone/iot-doc')\line +(u'gmszone', u'CreateEvent', u'iot-doc', u'None', u'https://github.com/gmszone/iot-doc')\line +(u'gmszone', u'PushEvent', u'iot-doc', u'TeX', u'https://github.com/gmszone/iot-doc')\line +(u'gmszone', u'PushEvent', u'iot-doc', u'TeX', u'https://github.com/gmszone/iot-doc')\line +(u'gmszone', u'PushEvent', u'iot-doc', u'TeX', u'https://github.com/gmszone/iot-doc')\line +109\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u19968?\u20849?\u26377?109\u20010?\u20107?\u20214?\u65292?\u26377?{\f1 Watch},{\f1 Create},{\f1 Push},{\f1 Fork}\u36824?\u26377?\u20854?\u20182?\u30340?\u65292? \u39033?\u30446?\u20027?\u35201?\u26377?{\f1 iot},{\f1 RESUME},{\f1 iot-dashboard},{\f1 wechat-wordpress}, \u25509?\u30528?\u23601?\u26159?\u35821?\u35328?\u20102?\u65292?{\f1 Tex},{\f1 Javascript},{\f1 Ruby},\u25509?\u30528?\u23601?\u26159?\u39033?\u30446?\u30340?url\u20102?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u20540?\u24471?\u27880?\u24847?\u30340?\u26159?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 -rw-r--r-- 1 fdhuang staff 905M Apr 12 14:59 userdata.db\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u36825?\u20010?\u25968?\u25454?\u24211?\u25991?\u20214?\u26377?{\b 905M}\u65292?\u19981?\u36807?\u26597?\u35810?\u32467?\u26524?\u30456?\u24403?\u35753?\u20154?\u28385?\u24847?\u65292?\u33267?\u23569?\u30456?\u23545?\u20110?\u21407?\u26469?\u30340?\u32467?\u26524?\u26469?\u35828?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 Python\u33258?\u24102?\u20102?\u23545?SQLite3\u30340?\u25903?\u25345?\u65292?\u28982?\u32780?\u25105?\u20204?\u36824?\u38656?\u35201?\u23433?\u35013?SQLite3\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 brew install sqlite3\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u25110?\u32773?\u26159?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 sudo port install sqlite3\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u25110?\u32773?\u26159?Ubuntu\u30340?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 sudo apt-get install sqlite3\par} +{\pard \ql \f0 \sa180 \li0 \fi0 openSUSE\u33258?\u28982?\u23601?\u26159?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 sudo zypper install sqlite3\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u19981?\u36807?\u65292?\u29992?yast2\u20063?\u24456?\u19981?\u38169?\u65292?\u19981?\u26159?\u20040?\u12290?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 \u25968?\u25454?\u23548?\u20837?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u38656?\u35201?\u27880?\u24847?\u30340?\u26159?\u36825?\u37324?\u26159?\u38656?\u35201?python2.7\u65292?\u36215?\u28304?\u20110?\u23545?gzip\u30340?\u19978?\u19979?\u25991?\u31649?\u29702?\u22120?\u30340?\u25903?\u25345?\u38382?\u39064?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 def handle_gzip_file(filename):\line + userinfo = []\line + with gzip.GzipFile(filename) as f:\line + events = [line.decode("utf-8", errors="ignore") for line in f]\line +\line + for n, line in enumerate(events):\line + try:\line + event = json.loads(line)\line + except:\line +\line + continue\line +\line + actor = event["actor"]\line + attrs = event.get("actor_attributes", \{\})\line + if actor is None or attrs.get("type") != "User":\line + continue\line +\line + key = actor.lower()\line +\line + repo = event.get("repository", \{\})\line + info = str(repo.get("owner")), str(repo.get("language")), str(event["type"]), str(repo.get("name")), str(\line + repo.get("url"))\line + userinfo.append(info)\line +\line + return userinfo\line +\line +def build_db_with_gzip():\line + init_db()\line + conn = sqlite3.connect('userdata.db')\line + c = conn.cursor()\line +\line + year = 2014\line + month = 3\line +\line + for day in range(1,31):\line + date_re = re.compile(r"([0-9]\{4\})-([0-9]\{2\})-([0-9]\{2\})-([0-9]+)\\.json.gz")\line +\line + fn_template = os.path.join("march",\line + "\{year\}-\{month:02d\}-\{day:02d\}-\{n\}.json.gz")\line + kwargs = \{"year": year, "month": month, "day": day, "n": "*"\}\line + filenames = glob.glob(fn_template.format(**kwargs))\line +\line + for filename in filenames:\line + c.executemany('INSERT INTO userinfo VALUES (?,?,?,?,?)', handle_gzip_file(filename))\line +\line + conn.commit()\line + c.close()\par} +{\pard \ql \f0 \sa180 \li0 \fi0 {\f1 executemany}\u21487?\u20197?\u25554?\u20837?\u22810?\u26465?\u25968?\u25454?\u65292?\u23545?\u20110?\u25105?\u20204?\u30340?\u25968?\u25454?\u26469?\u35828?\u65292?\u19968?\u23567?\u26102?\u30340?\u25991?\u20214?\u22823?\u27010?\u26377?\u20116?\u20845?\u21315?\u20010?\u20250?\u31526?\u21512?\u25105?\u20204?\u19978?\u38754?\u30340?\u23433?\u35013?\u65292?\u20063?\u23601?\u26159?\u26377?{\f1 actor}\u21448?\u26377?{\f1 type}\u25165?\u26159?\u25105?\u20204?\u38656?\u35201?\u35760?\u24405?\u30340?\u25968?\u25454?\u65292?\u25105?\u20204?\u21482?\u38656?\u35201?\u32479?\u35745?\u29992?\u25143?\u30340?\u37027?\u20123?\u20107?\u20214?\u65292?\u32780?\u38750?\u20840?\u37096?\u30340?\u20107?\u20214?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u25105?\u20204?\u38656?\u35201?\u21435?\u36941?\u21382?\u25991?\u20214?\u65292?\u28982?\u21518?\u25214?\u21040?\u21512?\u36866?\u30340?\u37096?\u20998?\u65292?\u36825?\u37324?\u21482?\u26159?\u35201?\u25214?{\f1 2014-03-01}\u21040?{\f1 2014-03-31}\u30340?\u20840?\u37096?\u20107?\u20214?\u65292?\u32780?\u20809?\u36825?\u20123?\u25968?\u25454?\u30340?gz\u25991?\u20214?\u23601?\u26377?1.26G\u65292?\u21516?\u19978?\u38754?\u37027?\u20123?\u35299?\u21387?\u20026?json\u25991?\u20214?\u26174?\u24471?\u19981?\u21512?\u36866?\u65292?\u21482?\u33021?\u29992?\u36941?\u21382?\u26469?\u22788?\u29702?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u36825?\u37324?\u21442?\u32771?\u20102?osrc\u39033?\u30446?\u20013?\u30340?\u20889?\u27861?\u65292?\u25110?\u32773?\u35828?\u30452?\u25509?\u22797?\u21046?\u36807?\u26469?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u39318?\u20808?\u26159?\u27491?\u35268?\u21305?\u37197?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 date_re = re.compile(r"([0-9]\{4\})-([0-9]\{2\})-([0-9]\{2\})-([0-9]+)\\.json.gz")\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u19981?\u36807?\u20027?\u35201?\u30340?\u36824?\u26159?\u22312?\u20110?{\f1 glob.glob}\par} +{\pard \ql \f0 \sa180 \li720 \fi0 glob\u26159?python\u33258?\u24049?\u24102?\u30340?\u19968?\u20010?\u25991?\u20214?\u25805?\u20316?\u30456?\u20851?\u27169?\u22359?\u65292?\u29992?\u23427?\u21487?\u20197?\u26597?\u25214?\u31526?\u21512?\u33258?\u24049?\u30446?\u30340?\u30340?\u25991?\u20214?\u65292?\u23601?\u31867?\u20284?\u20110?Windows\u19979?\u30340?\u25991?\u20214?\u25628?\u32034?\u65292?\u25903?\u25345?\u36890?\u37197?\u31526?\u25805?\u20316?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u36825?\u37324?\u20063?\u23601?\u29992?\u19978?\u20102?{\f1 gzip.GzipFile}\u21448?\u19968?\u20010?\u19981?\u38169?\u30340?\u19996?\u35199?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u26368?\u21518?\u20195?\u30721?\u21487?\u20197?\u35265?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 {\field{\*\fldinst{HYPERLINK "http://github.com/gmszone/ml"}}{\fldrslt{\ul +github.com/gmszone/ml +}}} +\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u26356?\u22909?\u30340?\u26041?\u26696?\u65311?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 Redis\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u26597?\u35810?\u29992?\u25143?\u20107?\u20214?\u24635?\u25968?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 import redis\line +r = redis.StrictRedis(host='localhost', port=6379, db=0)\line +pipe = pipe = r.pipeline()\line +pipe.zscore('osrc:user',"gmszone")\line +pipe.execute()\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u31995?\u32479?\u36820?\u22238?\u20102?{\f1 227.0},\u35797?\u35797?\u21035?\u20154?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 >>> pipe.zscore('osrc:user',"dfm")\line +\line +>>> pipe.execute()\line +[425.0]\line +>>>\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u30475?\u30475?\u20027?\u35201?\u26159?\u22312?\u21738?\u19968?\u22825?\u25552?\u20132?\u30340?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 >>> pipe.hgetall('osrc:user:gmszone:day')\line +\line +>>> pipe.execute()\line +[\{'1': '51', '0': '41', '3': '17', '2': '34', '5': '28', '4': '22', '6': '34'\}]\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u32467?\u26524?\u22823?\u33268?\u22914?\u19979?\u22270?\u25152?\u31034?:\par} +{\pard \ql \f0 \sa180 \li0 \fi0 {\pict\pngblip\picw520\pich380\picwgoal5220\pichgoal3820 89504e470d0a1a0a0000000d49484452000002080000017c080200000025c5d47e0000012f694343504943432050726f66696c6500002815636060327074717265126060c8cd2b290a72775288888c5260bfc0c0c1c0cd20cc60cc609d985c5ce01810e0c3000479f979a9201a157cbbc6c00812b9ac0b320b558e208f2bb9a0a804a8ea0f101ba5a416273330301a00d9d9e525054071c63940b648523698bd01c42e0a0972068a1f01b2f9d221ec2b20761284fd04c42e027a02a8e60b487d3a98cdc401622741d8322076496a05c85e06e7fc82caa2ccf48c12052303030305c794fca45485e0cae292d4dc6205cfbce4fca282fca2c492d414a05a88fb40ba1804210a4121a661686969a10916a522018a0788719f03c1e1cb2876062186b028b9b4a80cca636432666020c4479831478281c17f290303cb1f8498492f03c3021d0606fea9083135430606017d06867d7300c3af506fec25acb40000000970485973000016250000162501495224f00000019d69545874584d4c3a636f6d2e61646f62652e786d7000000000003c783a786d706d65746120786d6c6e733a783d2261646f62653a6e733a6d6574612f2220783a786d70746b3d22584d5020436f726520352e342e30223e0a2020203c7264663a52444620786d6c6e733a7264663d22687474703a2f2f7777772e77332e6f72672f313939392f30322f32322d7264662d73796e7461782d6e7323223e0a2020202020203c7264663a4465736372697074696f6e207264663a61626f75743d22220a202020202020202020202020786d6c6e733a657869663d22687474703a2f2f6e732e61646f62652e636f6d2f657869662f312e302f223e0a2020202020202020203c657869663a506978656c5844696d656e73696f6e3e3532303c2f657869663a506978656c5844696d656e73696f6e3e0a2020202020202020203c657869663a506978656c5944696d656e73696f6e3e3338303c2f657869663a506978656c5944696d656e73696f6e3e0a2020202020203c2f7264663a4465736372697074696f6e3e0a2020203c2f7264663a5244463e0a3c2f783a786d706d6574613e0a8a15bb0f00001e1e494441547801eddd7f6c94f77d07f03371e24bd360b2a69075a9599bc2b40dd3aec5d922406a4ba675018d61aa3573b42aa56a52b32d25dd3415addd92fe22aaa292a51b1e89c2ba69f1d26980ba25e93f9076c3345aa0a9149349c5fd314827d52c6d316b9223017b77e71ff8b081e7e0eeb9ef73df174270f7dcf79eefe7fbfadcddfbeeb93bbbe5c5e323397f0810204080c0a4c09cc913fe2740800001022501c1e0764080000102150282a182c31902040810100c6e0304081020502120182a389c2140800001c1e0364080000102150282a182c31902040810100c6e0304081020502120182a389c2140800001c1e0364080000102150282a182c31902040810100c6e0304081020502120182a389c2140800001c1e0364080000102150282a182c31902040810100c6e0304081020502120182a389c2140800001c1e0364080000102150282a182c31902040810100c6e0304081020502120182a389c2140800001c1e0364080000102150282a182c31902040810100c6e0304081020502120182a389c2140800001c1e0364080000102150282a182c31902040810100c6e0304081020502120182a389c2140800001c1e0364080000102150282a182c31902040810100c6e0304081020502120182a389c21408000815604cd2170f89bc33f38f0e3a0d6f29e3b165f71a51b58503d510c8144025e3124623288000102f1080886787a6da50408104824201812311944800081780404433cbdb6520204082412100c89980c224080403c0282219e5e5b2901020412090886444c06112040201e01c1104fafad9400010289040443222683081020108f806088a7d7564a8000814402822111934104081088474030c4d36b2b254080402201c19088c920020408c4232018e2e9b5951220402091806048c46410010204e211100cf1f4da4a0910209048c0ef5149c414fea0c255274ebde94450759e6e3995cbb98105d513c5104824e07e9b8829fc41dfbf7af0c96b1f0faace77cf7930a87a144380404201879212421946800081580404432c9db64e0204082414100c09a10c234080402c028221964e5b27010204120a0886845086112040201601c1104ba7ad93000102090504434228c3081020108b806088a5d3d6498000818402822121946104081088454030c4d269eb2440804042013f12232154e8c3def16aeedadc1b82aab2757434a87a144380404201c190102af461bf54f8bfb7ffcff34155391254358a214020b180434989a90c244080401c0282218e3e5b25010204120b0886c45406122040200e01c110479fad9200010289050443622a030910201087806088a3cf5649800081c402822131958104081088434030c4d167ab244080406201c19098ca40020408c4212018e2e8b35512204020b18060484c6520010204e210100c71f4d92a0910209058403024a632900001027108088638fa6c95040810482c201812531948800081380404431c7db64a0204082416100c89a90c244080401c0282218e3e5b25010204120b0886c45406122040200e01c110479fad9200010289050443622a030910201087806088a3cf5649800081c402822131958104081088434030c4d167ab244080406201c19098ca40020408c4212018e2e8b35512204020b18060484c6520010204e210688d6399b55ce5ffbe7cac307ab2967bbcb47db5b65cf6f357bde9d2f6e1da04081038232018ce58243cd5ffdd7f7cfec787120e4e61d81b5f37ff73bf7e5f0a139982008148041c4a8aa4d19649800081a4028221a994710408108844403044d268cb244080405201c19054ca38020408442220182269b46512204020a98060482a651c0102042211100c9134da32091020905440302495328e00010291080886481a6d99040810482a2018924a194780008148040443248db64c0204082415100c49a58c234080402402822192465b26010204920a0886a452c6112040201201c11049a32d93000102490504435229e30810201089805fd4d3248dfeaf398b47e6fe4e508bf9e5b1d62b832a483104082413100cc99c821ff5ad57177ef5c57c50656e6fb93ca87a144380404201879212421946800081580404432c9db64e0204082414100c09a10c234080402c028221964e5b27010204120a0886845086112040201601c1104ba7ad93000102090504434228c3081020108b806088a5d3d6498000818402822121946104081088454030c4d269eb244080404201c19010ca30020408c422201862e9b47512204020a18060480865180102046211100cb174da3a091020905040302484328c000102b1080886583a6d9d0408104828e017f524843a33ac77e495d19f16ce9c6ff4a99657032aa6d118e62740a0060282a16ac479afbd72f9cbc7abbe5addae70fab22b7f56b79ddb310102110a38941461d32d99000102e713100ce7d371190102042214100c1136dd92091020703e01c1703e1d971120402042016f3e47d8f4f496fcedff7db6efd05fa7375f829936bdfd4f7ee5e77e35c140438216f8b7fffeeabffde0ab419578fff207e65e3137a8922eba18af182e9ace15091020d09c0282a139fb6a55040810b86801c170d174ae48800081e614100ccdd957ab224080c0450b78f3f9a2e95cf1c202578ce57eaef5aa0b8f4b7144ebe8588ab3998a402605044326db9695a2979e3cd977e47b4155fbb3b7bd7a3aa8821443203c018792c2eb898a081020d05001c1d0507e93132040203c01c1105e4f5444800081860a088686f29b9c000102e10978f339bc9e3451453fcbe50baf5f14d4824647f36d4115a41802e1090886f07ad244153d3ffa96ad3fb93da8057d22777d67500529864078020e2585d71315112040a0a10282a1a1fc262740804078028221bc9ea8880001020d15100c0de53739010204c213f0e673d53d39daf64bb9b901b98d5d79cd1bab5e842b102040e09c02013dc09db3c6c02e78e4a59b9e7b71493845cd9f7bc5d670aa51090102d917702829fb3db402020408d4544030d494d3ce081020907d01c190fd1e5a010102046a2a20186aca6967040810c8be8060c87e0fad800001023515100c35e5b433020408645f403064bf8756408000819a0a08869a72da19010204b22f2018b2df432b204080404d0504434d39ed8c000102d917100cd9efa115102040a0a60282a1a69c7646800081ec0b0886ecf7d00a081020505301c150534e3b23408040f6050443f67b6805040810a8a98060a829a79d11204020fb027e514ff67b680504e213b8e9e4d8e2d75e17d4badb4e9dca5d115445175f8c60b8783bd72440a051026f3af9d20dc7bedfa8d9679d77a4a565d6ed59dce8505216bba666020408d4514030d411d7ae091020904501c190c5aea9990001027514100c75c4b56b0204086451c09bcf59ec9a9a09a427907f665bebb1c1f4e6bbd04ca3575ef3f2aacf5f6894cb2f4940305c129f2b13687a81392f1dbbecf8917096d9f2da4be114d3ac953894d4ac9db52e0204085ca48060b848385723408040b30a088666edac75112040e0220504c345c2b91a0102049a55c09bcfcdda59eb22d0cc02bb4eadfcdae80d41adf0f363af6b0faaa04b2846305c029eab1220d02081932dadc74fb53568f2734cdbd23c07609a6725e7e895cd04081020509d8060a8cecb6802040834bd806068fa165b20010204aa13100cd579194d800081a617100c4ddf620b24408040750282a13a2fa3091020d0f40282a1e95b6c81040810a84e403054e765340102049a5e4030347d8b2d90000102d5090886eabc8c26408040d30b0886a66fb105122040a03a01c1509d97d1040810687a01c1d0f42db64002040854272018aaf3329a0001024d2f20189abec51648800081ea040443755e46132040a0e9050443d3b7d802091020509d8060a8cecb6802040834bd806068fa165b20010204aa13100cd579194d800081a617100c4ddf620b24408040750282a13a2fa3091020d0f40282a1e95b6c81040810a84e403054e765340102049a5e4030347d8b2d90000102d5090886eabc8c26408040d30b0886a66fb105122040a03a01c1509d97d1040810687a01c1d0f42db64002040854272018aaf3329a0001024d2f20189abec51648800081ea040443755e46132040a0e9050443d3b7d802091020509d406b75c38d2640a06e022ffdfddf8fbef4b3baedbeea1db7bef56d57beefb7aabe9a2b645f403064bf8756d02c02af1e3c38367222a0d59c1acd098680fa915e290e25a5676d260204086442403064a24d8a244080407a0282213d6b331120402013028221136d5224010204d213100ce9599b890001029910100c99689322091020909e806048cfda4c040810c8848060c8449b1449800081f40404437ad666224080402604044326daa448020408a4272018d2b336130102043221201832d12645122040203d01c1909eb599081020900901c19089362992000102e9090886f4accd448000814c0808864cb44991040810484fc02fea49cfda4c8108fca4f0934f3cfda78114335ec6efbeb5fb96856b822a4931310b78c51073f7ad9d000102b308088659506c22408040cc028221e6ee5b3b0102046611100cb3a0d84480008198050443ccddb776020408cc2220186641b189000102310b088698bb6fed04081098454030cc8262130102046216100c3177dfda091020308b80609805c526020408c42c201862eebeb5132040601601c1300b8a4d04081088594030c4dc7d6b274080c02c02826116149b08102010b3806088b9fbd64e800081590404c32c2836112040206601bfa827e6ee47baf62b46c76ebc627e508b7fd3a8a768413524f6620443ecb78008d7fffab1b13ff9c173412dfc95f65f7b35a8821413b780e72971f7dfea09102030434030cc20b181000102710b0886b8fb6ff5040810982120186690d840800081b8050443dcfdb77a020408cc10100c33486c20408040dc028221eefe5b3d01020466080886192436102040206e01c11077ffad9e000102330404c30c121b08102010b7801f891177ffad3e2481b9efba66ece5b6702a9ab3f0f26231036dcb5fba7a6138555d9ebfea37c2a9a6492b110c4dda58cbcaa0c0bcabbf3ba7f5783885bf7af535afe4724fbdf4d66ffff8da70aa7ac355970b867ab7c3a1a47a0bdb3f0102043226201832d630e5122040a0de0282a1dec2f64f8000818c0908868c354cb9040810a8b78060a8b7b0fd1320402063028221630d532e010204ea2d2018ea2d6cff040810c8988060c858c3944b8000817a0b08867a0bdb3f0102043226201832d630e5122040a0de0282a1dec2f64f8000818c0908868c354cb9040810a8b78060a8b7b0fd1320402063028221630d532e010204ea2d2018ea2d6cff040810c8988060c858c3944b8000817a0b08867a0bdb3f0102043226201832d630e5122040a0de0282a1dec2f64f8000818c0908868c354cb9040810a8b78060a8b7b0fd132040206302ad19ab57b9042e596074ace554eb9597bc9b5aeee0b5b1cb6ab93bfb2270690282e1d2fc5c3b83023f6db9fa0f5efe645085ffdee8cfaf0daa20c5c42de05052dcfdb77a020408cc10100c33486c20408040dc028221eefe5b3d01020466080886192436102040206e016f3ec7dd7fab0f49e044fe17e6b4bc3e9c8a5ebdec9acbc3a94625290a088614b14d45e0bc027f78e20f465e397dde21a95ed8356fdea65427345928020e2585d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d50070102040211100c813442190408100845403084d20975102040201001c1104823944180008150040443289d500701020402116879f1f84820a5d4bb8c1bdff96b3599e2f43bd68fbde12d35d9556d76f2f24f5b9f7ee4f45b968fbdf5a6daecb0467bb9ecdfbf3436effad1b7afabd1fe6ab39b39cffe73cbcb3f39bde2a3b5d95d8df632e7bbfbe61cf9cf53c5aada5e5fa35dd660372dc70e5f36f8afa7dfbe6eecda1b6ab0bb5aede29513addf7ce8f42ffec6d80d2b6ab5cb9aece7b2fff89b96d75ea9c9ae8a3b79e6d96fd76a5717b11fc1701168ae42800081fa0a0886fafada3b010204085425e03d86aab80c26408040f30b0886e6efb115122040a02a01c1501597c1040810687e01c1d0fc3db64202040854252018aae23298000102cd2fd0dafc4b0c6c8585c2f0d0c1c1a1a3474f1472b97cfbfc8e8e259d9d1dedf9d4cb2c0c1f1d3e599a353fbf63c139a72f1c3f7aacfc4d97f605a9155918193e3652d4b9c09ff91d0bcf59f605ae5ac5c513c5b4b5772c985779b5c2c8d1e112cd6c178ddbb6cf5f58ffc64ef5b1b2bab3cea5d8be33334fdd78ce6c9a7eeabc37bce903eb71ba50181a3a3078f8e88991e29da06dee828ececece451d67b5b81e1367639f117d8f21808614f6efb87bedc7fb6756b26ecbe35fea5d99c2c3dcd4d485c38f5e7fe3c6f1b39fdd77e4a39db3df25f66f6e5fdb571ed5b9ed87fb6e4ba7c2a1fed5376d1c982af55c27eedf377c7b67dd2b1adcb1e23d1f1fcce5ba9ffed1df2d9a3e5be1b9775fb7f250a9b8de678fdfd731bdcac281775f7773f1a2758f1c7878fde2e997d4fe74e1b9b5d7addc7fc1fda6d8bea95a2ed8c7fb9f19be7df174d3a9abd6f7c4d1811d1f5c7377b9779513756f797adbc68a2e575e1ecf398792d2ebf5c1ad374fa5c2ba9e4d9fdab2e5ae9e89af6eeedebce67d5b0fa4574a69a63377c84ff60dccfefcbcf0dc97c753a1383ccdbb4b5bc5c3ecb958e6b69deb925a6eefe8da50deddaec1a31548238303938f2c7d872a2f2a0c0d8e5fb4ae2bd1422eaddcfcfc24d74fb37d53f55ca88f73a746a678626460db3b2753614977cf5d7fb9e5539b7a26e6dfb5f9a6dfdc567e819c6241414e2518d26acbf09ef7dd5b7ce2597ceab9f5d91f8d3cbcedde8ff56efc8b6d4ffcf03bfbee2c9770e8de9bf7563ebea455592ed7df7768b67bc3f0c19dbba78a383675aaee2716adef2bfea496a9bf3f7c665b79caeeaf1f39b3b17869772a4f36db172d5b5e9efea9c1e1e92b1f1a7862eaec93072a2f3ab0b37cd1a6251d67d2776a708d4fe4173f3ccdeac5e3471eea2ecdb0fc8bfba6004b2776acaf7f29e75ad98ab31a3755583a1dac2cebc85fadd95cded2fdd5e786bfb1a3ef2feedef8b17bfa5efcd1e1877a3b4bdb07377f61cf91caabc4784e30a4d4f5c2c8f8436fe757b66c98fe70915fb0f473cf3d3a5ec40b090eacd7a7dc812f0fccbc3314f6dff740ae7c67a9cfa4c9f73af198964fe525c2d965e53bd6955fd73db67770da4b86e1fdf79e39d8f5d8de83d32e3a7e6857f9a2de9b5378bd7076b5932f04e7e71b170467d734bf318d3bbb8cf2f9c2c917caffdff5f87dcb2bef87dd5b1e9d788a7674b66749b3eead79370a86947b3b78f2e4b4c790f1c93bbabed4b36249f13178c625a915f7d87d7bcfbe370c0fdc517c7c1bcc2d5f114438a4463163a279efea2e3f09ef1f38f3aa69f8f0674ae37abff278f9d54cff9e17a67a5738fa583917ee5a5de7771766146a431281f1671727677912b670dd177b9774e6e6e7ca9fc948b2afe61d2318d2eeed0797f63e397864ea61a43cfd82dfdff6c4378e0fdcde35fb3bc0f52cb1f3fe4777940e950cdebdbff240d6d0def2eb98ee6d7ff6a1b07e86653d3566dff7a2ae9bcb17f40d4d120d0fee296de9ee5abeacebd6d2a9fea977208a6f3094df0aee5cd5b9a074893fc51731e1bc7ac94d3cea6fbf6de95f3df1dc59e9b06cc37ddfd837f2f0862e4d130c29dd06f28b578d1ffccde5767d70e5d2ebe7b57f64e35ffed3ce3d8387872b4322a57a26a7199cbb68d99de5f7deb63f71787263f1ff23ffb47157f1bfbb36ac787348f7ea6915a67732bfa8735d79b6fd87c7df4b281cdafb4071c3adab3bf3f98ef7965f4e7cede0d1f1825e18cf8cce9e25ede95518f64cfdc5dbf9fe3d7bf64efbfbe413fb264336dddaf38befda566e582ef799db56de705dfbda0dbd7fdbbf73ffe0e1b34222ddb2829b4d30a4d69279dd3b8efcc396c9cf3fe472bbfb1ff8e30faf7fcf8d8b8b21f147f7ec1c3afb504e5a85e5172cefb9a738d9fecdfd138f6db95c6170e0c1d2fc2bd62d5b982b34aab2520541fcc92f7e6ff955d35303e342c34f953facf5ded2878ef2cb56977ababbff4039e00b83fda5405dd2d32517a67af7e087d7af7dfffa0f4cfbfbc1dbd63c35d49867449d3d7d5f7f74cb92c9e2f6efeaffe4c60d6b57761543e2dd1bb6ee3f7c7cf292a8ff170c69b67fde2dbdc5cf3f1c797adfe30f7df19e75d38edd3ff6c0869b16ae68c8a7928a6f79b42f5b5d7e46dcf7e4e0c4bde25bfde5af38f4f416bf27e0806be9d1bfa7f434f3d003074b2f198e1edc5ebad5f42e2bbf7b39bf6b75e9dc407fe981ae70f86be537186e5db1a8b4d19fb240f153a177f6f4dc3aedefbaeede45893e665b0fc17ce7ea8ddf383efcfc33fbbef2c8d63bbbcf1c293db4eb9eb5372efcb44f25e572adf580b7cff309e4e72dea5c59fcdbbde1ee870b85a34307766f5df399d2b3ccc10f2cddf1bde31b1bf04c33bff8f64d9dbb1f182c7ea1e1f66d6bf2935f5ff86cef99fbccf95614c1656f5e567c9ba1d8a49d2f14ee3e79a0fc0643efeaf10f1de53b3a8b9f66d99e1bf8d650a1b37da8fc01df15cb17a5ff7651b06de87e785b5f43be47715e91fc82c54b8b7f57addff0b91dc52fb11fdebb73eb1df796ee870fbeffb65547069637e07e78de7ad3bdd02b8674bc0b07fbb7fef9e6deb33f155a3c44ddb9f2633b86bfb269fc933f071a73e035977b57cfdd2588febee2d3de9189af2ff4de728eaf43a74316d42cf98eaef28baac14343870fed2d7d777dda878e16de526edfeec1c34383e56f29aee809ef71b0919c8d396634db8a870f3cfae79b3ff1e91dfb2a4bcab7772cedbefbef9efd974de52b0d1e6dd4fd70b69a1bb24d30a4c43ed47fcff6befe2f1f183f487dd6a4f9e5eb378c6f6ad41bbdf9c52b3e55aa6060f7de037bfb1f289e5abea5a7111fc31f6708efdf7cc76f97dfb3dcddb7637b29172a3e74f4b69bd71737edefeffbf2ced281a4753d5d8dea637870a58ac2d13831b4677b5fdf831f1f9cf50069c78af5e35f66cc35e41b3321354f30a4d38d7cc7b2d26b8243f7aed975b8f2c94a79fe6fedd9395ec72c97a553606ec12de54f6b3c78dbcd77941ef87277fa187e857cf1c074e94de6e2a37fe9d3a8951f3a5ad0b9acf466e640fff65da52fb7fff632915a6408f1cfdc8ea5e5b2367f61e7f4cfe04d943a72706ff9a3c621569e724d822125f0896335b9dc1d372ef8dbd207a82722a0307264ef8edeb5e35fa3ed5ed3c043108b564dbc6a2989746eadf85e684a48414ff3e6cee2db0c137f967f6845c521e8f6ce5bcf7c0bb0a773fa576a27afe2ff1004162c5b7d6bb98eed1feefa48dfe347273fa35a281c1fdcb3e38635f7942fec1eff5841080537aa06c190927c7ef1faa71fe91d9fec93a50f502fb8765e7bf1eff50b977e60e2e7adf67c7d5b037fa04d2eb7a06bf29b16b93b3fb1aae2812f25a40b4cd3b89753a5c28a6f078d3fa6144fdfda75d6b79ae72d9ffc7988b99ed5bef931d9c8c9673f93e71bff7f7ef1fdcfec182f63f7e6dbdeb970f26e78ddc2f7bcbffc365b2ef7d0335b1bf8fcacf144e50a04437a8d58b4febeef3df3f85ddd679e5b4ecd7de717773effa3befaff0ce9a9098b8f73138ffcd37e61407ed5867bca23ba6f5db5706a68dbf8c8867db870aa9046fff49fe277d926be85d2b36cc623c7a2151397dd59fcd6db54c98d3bd116c051f2b6fcf877bfcffddb3e1ae1537c8af6e291035fda34f135b7e9252cefddfaf5ef0c772ff689b29cdfc730fd8691d2e9e2ebd6916323270ac537c0dada16b4cf6f9f17c243494a8b370d8140040ac59f6c59fc9550a5f7a1dbf2f3e7cf9fd7e8a71e81b894ca100c013543290408100841c0a1a410baa00602040804242018026a86520810201082806008a10b6a2040804040028221a06628850001022108088610baa00602040804242018026a86520810201082806008a10b6a2040804040028221a06628850001022108088610baa00602040804242018026a86520810201082806008a10b6a2040804040028221a06628850001022108088610baa00602040804242018026a86520810201082806008a10b6a2040804040028221a06628850001022108088610baa00602040804242018026a86520810201082806008a10b6a2040804040028221a06628850001022108fc3f93375660613a18c30000000049454e44ae426082}\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u30475?\u30475?\u20027?\u35201?\u30340?\u20107?\u20214?\u26159?\u65311?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 >>> pipe.zrevrange("osrc:user:gmszone:event".format("gmszone"), 0, -1,withscores=True)\line +\line +>>> pipe.execute()\line +[[('PushEvent', 154.0), ('CreateEvent', 41.0), ('WatchEvent', 18.0), ('GollumEvent', 8.0), ('MemberEvent', 3.0), ('ForkEvent', 2.0), ('ReleaseEvent', 1.0)]]\line +>>>\par} +{\pard \ql \f0 \sa180 \li0 \fi0 {\pict\pngblip\picw538\pich538\picwgoal5400\pichgoal5400 89504e470d0a1a0a0000000d494844520000021a0000021a0802000000e9db73710000012f694343504943432050726f66696c6500002815636060327074717265126060c8cd2b290a72775288888c5260bfc0c0c1c0cd20cc60cc609d985c5ce01810e0c3000479f979a9201a157cbbc6c00812b9ac0b320b558e208f2bb9a0a804a8ea0f101ba5a416273330301a00d9d9e525054071c63940b648523698bd01c42e0a0972068a1f01b2f9d221ec2b20761284fd04c42e027a02a8e60b487d3a98cdc401622741d8322076496a05c85e06e7fc82caa2ccf48c12052303030305c794fca45485e0cae292d4dc6205cfbce4fca282fca2c492d414a05a88fb40ba1804210a4121a661686969a10916a522018a0788719f03c1e1cb2876062186b028b9b4a80cca636432666020c4479831478281c17f290303cb1f8498492f03c3021d0606fea9083135430606017d06867d7300c3af506fec25acb40000000970485973000016250000162501495224f00000019d69545874584d4c3a636f6d2e61646f62652e786d7000000000003c783a786d706d65746120786d6c6e733a783d2261646f62653a6e733a6d6574612f2220783a786d70746b3d22584d5020436f726520352e342e30223e0a2020203c7264663a52444620786d6c6e733a7264663d22687474703a2f2f7777772e77332e6f72672f313939392f30322f32322d7264662d73796e7461782d6e7323223e0a2020202020203c7264663a4465736372697074696f6e207264663a61626f75743d22220a202020202020202020202020786d6c6e733a657869663d22687474703a2f2f6e732e61646f62652e636f6d2f657869662f312e302f223e0a2020202020202020203c657869663a506978656c5844696d656e73696f6e3e3533383c2f657869663a506978656c5844696d656e73696f6e3e0a2020202020202020203c657869663a506978656c5944696d656e73696f6e3e3533383c2f657869663a506978656c5944696d656e73696f6e3e0a2020202020203c2f7264663a4465736372697074696f6e3e0a2020203c2f7264663a5244463e0a3c2f783a786d706d6574613e0afe04f17100004000494441547801ed9d09781e5779ef3f59bbb559b22c4b8e23dbb1122f49488863b29bdc5020f4164a439f5b5202a55ccad2f669435ba05ca017d284b6f402690bbd10285c08049a26697042c90e8ee36c8eedacb6ecc88be44dd6be5ab236dff7f328a34fdf3a33dface7fcfce84966ce9c39cbef3da3bfcef69e829e81c118ff20000108400002f9115890dfebbc0d0108400002108813404e68071080000420e00201e4c4058824010108400002c8096d0002108000045c20809cb800912420000108400039a10d4000021080800b0490131720920404200001082027b401084000021070810072e2024492800004200001e484360001084000022e10404e5c8048121080000420809cd0062000010840c00502c8890b10490202108000049013da000420000108b84000397101224940000210800072421b800004200001170820272e4024090840000210404e68031080000420e00201e4c4058824010108400002c8096d0002108000045c20809cb800912420000108400039a10d4000021080800b0490131720920404200001082027b401084000021070810072e2024492800004200001e484360001084000022e10404e5c8048121080000420809cd0062000010840c00502c8890b10490202108000049013da000420000108b84000397101224940000210800072421b800004200001170820272e4024090840000210404e68031080000420e00201e4c4058824010108400002c8096d0002108000045c20809cb800912420000108400039a10d4000021080800b0490131720920404200001082027b401084000021070810072e2024492800004200081221040407302d39333c33de3fd2746272763c5c5b1daa5158b9a166ace84ea43c00101e4c401345e5187c0c0b1815f7defe553a3f3f463c1d29277ffcfb5e53525ead4939a40c07b020c7679cf981cc24a60b8e7d443ffd496a42552d89913133fb9fdb589b1a9b0169c7241208c049093305a8532f94360d7dd3b3365547972fad9a77a323d251c02104825c060572a1342c242e0f4d0e0e4de574f0d8ec9ac464975f5c2f3562d58b2c4adc28d0d4e1c6b2f36522b6b287fdb1fb454d5979e681bfad577f71981c75eec89bdbdd1adec480702ca13404e943771542b38bef9cea1dbbe69965e069e4ec66243bf7de3eabffc644169a919eef862a87bdc7c77e3f5678996c8edd2966a3330d63317612e902b084020030106bb328021385002633ffd56a2969865a9fef94ff77de91fccdb7c2ea64ecd98af57d4cecebaf7b4f79b81a50de5e635171080404e02053d038339231101027e1298e9eeeef9addfca9263c5f7be5771e1855922587924f3f04327c68c98fb9fef3ed69afc215cfe7bab565eb2d84a52c48100048400bd139a41e8084cee7ec92c53c9bbdfbde4d147963cf964d5a73f6d068eefc838856ec6c97921a35b679dbfc8f8a96e989d44497c6bd9ba9ac45bae210081ec049093ec7c781a3081f26bae29a8ae91c992e2cb2e338b323d3c645ebb74916612f1febbda5d4a9c6420a00501e4440b3347ab92050be7e6c30f3db445d6779d3e756a72db03662dca5b5acc6b572e163595bfe9fae532ba75cea5f5668233fbfa078ec9f43fff2000014b04d2fc5166e93d2241c03302c56fbaa8e89ce553078e480eb54ffca2fb895f24655579d59549210e6e0fedec3cf8ca315930565adbb0e93dcb8d1464b2a4b2beece587e259cbbfeeceb145cbe66d9837c2f92f0420904a80de492a1342022620435b159ff8b34c8528fae33f96e1af4c4fad870f1c3e7662f74cefee9963db3ac56d97f9e2d917d69ad743c767e7eacd102e2000814c0490934c64080f8cc0d4e1c3839ff94ca6eca7fef55ffbb66cc9f4d44678518519b9ffd89c6c0c9d98db0c5f5e87db2e13121710c8410039c90188c7fe1338f5f0dd89992ebce92659d655d4b2d20c1cf897efc86c8a79ebeca2694d93f9e2fdfff6da9ee77b8fbe36b0e78957b7fee8b819deb06c4e72cc402e200081b404d87792160b814112e84a58c455ffe083866315d18ffe0fffbe31a12285abbbe79ea2b3cfcea79432c0f5c83fbf38d83537cc9594da92b5356ffbc3739302b98500043211a07792890ce1c113985c7daee9a44b26544aaebcdac53215162fb8e2c6b5350d8569d3ac6c2cbff28615691f11080108a425c0caaeb458080c0581e2fdaf4ba7c4f4d035bd7b97bbc592555bd77ef4fc833bfbcca55c927e4d6379cbe54b64c5b0e88dbbd9911a04d426c06097daf68d64ed866ffdebb1077e6514bd6bfd9b577cf84699101fd9f25fd3bff8b5599f86e79e33af5db9109f2b924e517101a766b9c293443424809c6868f4b05779eaf5d7fb6eba294b296bbefad5d2b7be354b041e410002fe13a03bef3f7372cc41a0e8dc73133d7425c596855e684912136e21100602f44ec26005ca908680f451c6fefddfc71e98f3ad527ad555e537bebf64e35bd2c426080210089a007212b405c83f2b01998a9feeea92288535d5ae6c86cf9a1b0f210001e7049013e7ec781302108000044c02cc9d9828b8800004200001e7049013e7ec781302108000044c02c88989820b0840000210704e003971ce8e372100010840c024809c9828b8800004200001e7049013e7ec781302108000044c02c88989820b0840000210704e003971ce8e372100010840c024809c9828b8800004200001e7049013e7ec781302108000044c021c9f65a288c045ffa9fee78e3c79722a565c5efceee6df4c2af1d8d4d86bfdaf1c1f3a3e3935595c547cc1920b57559f931487db999191a98ec3a3e54b4e9e2c1c1b9e3480c8c5d8e0ecb511d27ff46412ab1f55cd3b9dbebeaa6449859cc332f76f6149e18aba72e37ec5e2f285c5f1731ecb4b16acaae7c0f9394a5c294c00398992715fe97de9ef5ff9aa51e2243979a16bdb6ddbbed45f30ef97e0d292d5b75ffbf74d0b9745a9926e94d5d00c4969aab555fe3bddd171fae4c9e9de9ed3dd3d46f2fbaeb979f064693e59f50c4fc84f520a3b3a069342ccdb758d95726dfcd7109bfacae286ea3233021710883a01e424321694aec99d2ffd73dae28a96fcd5d39f8915243f3c31b1ffc38f7ee267d7ffb0b6b436f99942f786788872ccf4f6cc74f7181212b6faede91c912219ff4d2c9b08cc92aa92fa8a12b9a02b934886ebc811404ec26eb27bf6ffe4e5a3af4c4e4f3e33f8ac9475f8a5e1aa8baa920afd77db6f490a316f4f9deefdd1c1fffcf3b51f3143a27e6188877438443ca6db3ba60f779c1e9dd727b352c1eaa9eec1d8722b31bd8e2302b3a7735e26cd8bcb65184dc6cd4460d62f4bb6f5bca8dc40204c0490933059235d59f6f5ed78b26ff65cf493074e766dee4a92930343fb7b27e37ff9cabf9ab225dfb8f26be754af7ef2d8afffe6f9cf1b81bf3af860d4e564fa44d7d4debd53873b26a50bd2de61d44bd5ff76f48ec98f396e26eab2b2aebcb9b67c6d6305d330aa1a5d8d7a2127a1b76361b159c485e72c5cfdc5d5e66deac5450d1b444b247cd3b26bcda703a74e98d711ba98d8bd47ba20327235b5b7d541ff234235cd5e54435dcc38d2651181b9f4ec1a3a2e26132e424200390989213216e3bc9a0db1e6f82caefcdbd9fd5ccf58bf716dfeb7bc68763591846c3fbcfd40cbfe33bd9347cd0817d65f615e87fc62f2e0a1c95dbbe21272660addbbd25674ef8bd58462b0cb6e1dcf0c8e8d3cfc5ab7bc28d262fc202d763112df0b02c8891754dd4cf37757ff0f33b9af6cfff423479f366f8d0b59b8f58ee6b73fd211d78fb1d3bd1f79e2434911fee0bcdf4b0a09d5adcc854ceedc35b9b77572e74e9d7b210e8c62488bf1a2e8ca86e69a0dcdd5ac16734092575c21809cb88231e044dedff241434e52cb7176f5baf3eb2e480d0f3cc4e8884cecdaa9fc5c883fa80d69f9f1f34765438ce8ca35ab6b9968f1873cb9980490131345542f64f7e267b67c3253e90f0fedf9dfbbbef6d58d5fc814c1e7f05d3d3bea9fdc5df9e8d3c17644aadab6c7365ce773ddfdc94e76c3c85098fc2c2c2dbc34de5fa9b974c5227fb22617cd092027916f00dbbb9eea991e35ab71f9d22bd6d6ae7fa673dbde81f80e3ef9f7fcd15f1e5873a331456f84f8ffdff6a1434f1c7becc59e5d639363ef193beb4afb4b7bfd2f73d4733c796afac9d7fbe4472a22a2b2e9dc3a7425ea360d79f99193901b2877f19e3afa8819e996b7dc66ace9faf0da8f7c65e797cc11b057075a039193ee935d8f9f5191beb15eb390bbea06af346f82bb282c3a3d3d95b2f333b8f2789ab32c3b961fa3bf724d4bddfa26b6b378ca5bd3c49113a50c7feea2f3ccfabcb97ea3292766a03f17a2222ff5bef8f4896d47860fa7e678b86c64bca9aeec78fcafe600ff55964c0c4ee5e56725c0c23bcbdaecaf30bfe20c206f6527809c64e71389a70bcc52f68df7991eba4e9cdc6b86fb73313a31125791ce6dfb067264ddbab6f2e2a0e5c41f26e1ccc59c5f912d2cef5ab7e492e6eacab2b9ed4de12c33a50a3f01e424fc36ca51c2f3ea363c72f42923d2cdbffaec872ff8f0e2f28aa3fdafdd79f07ef3cd0b16ad35afbdb83006b564c246a646aca4bfad71f0622bf1bc8c53189b8ac5f4ea9da4e2943d92df79aac318047bc7ba7a1683a52222c43a01e4c43aab90c67cdbf2b7ffecf51ff68c0f48f9260b07bebbe7f6a482beadf97aef264e5afbf73c71243ec79e9469f6db308c77554cf5f7c5701d1f37943908269b5736b5d46d3a6f7176f3f114026909202769b18436706e5ccb2ca2780bfeeb4bbef4574fdf6c86245e9cb768ed9f9effa78921ae5c1be35a9bdb7f9e38c76e2b65c6bb6ce1f227b2b179e5ceed4765bafefa75f5ec88f407bb32b92027913265e1acb795a4425fdab0f1a7eff88f7bf7ffc73dfbef361fd5972f797fcbeffff715ef4ef4c2623e757c21e35a0f766c3696fc3a4e445e7cb9fe64b0e35d855396c6e5f2a96344df95ce8ab17345d616ffce454b119588dad1ff6217f40c643cf0c7ffd29063fe04c4c1b024221262cec9e79fa691828c6b3d786873ce6976ebd9fdedfd0b8bfb87adc77737e670cbc6d61a1b3b19934e6374b730614e4d46c06e7873236b8bc36ca390948dde49480ce15a31bc9826715d488cda1e6ba95db13d3039718db8ea09c908d86dbf6c635a45753bbb503fe4c405880a27e1919018c4b6ac3cf9a1ed81c15b303e1cab092cf7c8656c4cabdcfb52e7fb2e6a64ae3e72e6f3a7c00c76f9c3397ab9782a24268e60c7bbb66ff8ac59929c17da0e76a592915d90884a2a1642e89dd0069209f8232446ae8c7725d38fc2bdec8294dd2a4fb6f531a7120573f95746e4c43fd6e1cfc94f213168bcde30bd22382e5ab9ed721db339a782a8b8ce36a209222711359ccbc596e5bf3fdcfb0317576d592cdf630d9dffadaca4707cc2627c77a369e8b6cb5d80929a292a1f78cb3236d5bb8e375a092227d1b297fba5950d890f746c7ee2f063ee276d2dc5ee354b1b5f4ae329d2dadbc40a050111952f6cde27fb543eb07119eebf426192200a819c04413d34793e7dfca97fdfff538b8eb63c2af5abcb671a5ff228ed1cc9e2b62b07209b8fe56c95173a06af5fb7e47d9734d97c95e82a10404e54b0a2833ac834c9ddfb7f96d681bc83d4f27925c0f12edc76e563b8b4efca8efafb5eec7c727fdfc7af6e66e7635a440a0722270a1b377dd56474ebee033f7be6f8d3e91f07113ab4b2beb6f558103993a7270464e997b1f3f163579f8d8f164f108732d1342e0543594e0ae50e81cd07efff5fcf7f36545a2215dbb322983f6b70dbe54eabca908a4ca87cea9e3df7ee3c9ee139c1aa1108e633568d6214ea23a35bff6feff71d3b00f6b48a5b96760572dc6f59ffe158cdb99e568dc419fbd2a70dd03b51dfd632baf5b3b6bbbefee23f86534bc400838593fd6b97a96f095d6b688c7dfde8b92323e393ba32d0a2def44e143773983b2589e865bcebcad6c4003fae8b078ee3b6cb0fd067f210a7f75bdbfa643665e38a5adf3225233f0920277ed2f635afc03794d8aa6d20e35d653d4762016ecab7054889c8b2eeebf6c70f6d68ee1751617b8a12269d570906bbe6e150e6463a257fbbf3cb016e4eb44b52c6bb46562db5fb16f1a3486047c7e0a7eeddb3bdbd3f8a85a7cc5908d03bc90227928fa2d5294944dcb6b2f4e28389017e5c9796ce9c3ac51f557ea04eccc3e8a66c3a77885df48958a27e8d9c44dd82f3ca1f95999279857ee3665be3a0ffc7fd96154e9e8a95be5104feef2b01d945bfbb73840d8fbe42f73233fe2ef392aebf69877cf9564e1887cb46c69bea724623824a048c455fec4d51c3a6c8890a76147fc0b7bcf0bf23345392097aebdaca4c8f3c0a2f3d7dd2a39449d63a01d99bf2b99fb71eec19b5fe0a314348003909a151ec156957f78e5b777e390cdeb7ec953b5d6c19ef4a17ec6158e934bfc23cc46b3de98edeb1af3cbc7fcbde1eebaf10336c04983b099b45ec95479ca63c7868b3bd77421c5bc6bb266bab8afb87435c468ae61501999fbf63dbe1f681f10f5db6dcab3c48d74b02f44ebca4eb65dab282ebffecfa0795b4c4a025c7fd7a892d39ede2b1bee420ee032520bb1d65e0ab6b683cd05290b91302c889136a81bfd33e74483c39fa7f78a20f15dfb2d2d7c98c921146577cb0aabd2c64e0ebf30fecdb7d9c4eaa3d6e81c7464e023781ed023c76f891db76dc12ec9957b60b6df985dd95fd32de65393a11d52420035fe2e29e155fd1b22e7212257bc900d7bfbef22f77b7fd2c4a85b65f563fc7bbe26ebbf8175602b2e2ebeb8f1dc0716458ed935c2ee424994868ef6580eb6b2fffe38b3dbb425b42b70ab66bb97f7e67e36ebbf8176202e291e5b687f73395126213cd150d39996311e62bd192afbffc8f6aac06cec9f9d9455dd3652539a311411302c6540abb52c26f6ee424fc368a6d3bb655b444d5c992b406e85ee39f3b4871db95b60c048687804ca57c61f33e76a584c722694b829ca4c512a240d1921feefd81565a22f45f5deedfaf7871db15227b5394cc0464570a93f399f104ff043909de06594af083d6ef89966489a0eaa3c71a3a19ef52d5b8f9d44b26e7bfb3b59dc9f97c187af72e72e21ddbbc5296455ca225cf1c7f3aaf54a2fcb26fe35db8ed8a5633113fc432398fa284d06ac849088d12132d91455c3a6b8958e54063813fb6c16d973f9c5dcc4526e751141779ba951472e21649d7d23116046bb2882b0b3539ee37cb531e694ec05014967b85aa192027a132474cab05c1d9d1cb71bffd6b97658fe3cad3f201b69eb802d2ef444451c409318ae237f7ccf9212799d9f8fec4d012dd167165c1bc67851f1eaf174cfaea252c4b7d796497802c204651ec42f32e3e72e21d5b7b29a325a9bc18ef4a65424812014351d892928425905be42410ecc999a225c944cedcfb33de557e7c5fdadc098c0a015114d99282a2046e2fe4247013ccce9730c695d612ed4d9e8f77158dfa7d0464da9a1298270114254f80f9bf8e9ce4cf30af14e89764c7e7ff71bfd9cbc3d33013405182b50e7212247fb424277d39ee77bca92e67b43c2354944de59902af8784008a12a0219093c0e0a32516d1b7aeadb418d371b4a205d38edfe5c5b011405182b20872120c79b4c43a77c6bbacb322a641004509a425202701603fd9b75f3787f3f950f661bc6be10cb3f1f998288ceffef88563ec70f4d930c889cfc0630b7adb1a1ffbeb9b26cbfcce38caf99d58eeed7857d1cc4494f150f63404d8e198068ac741c889c780e7272f5a52f9f8e70a26467fe3e89e3f8ad5ce7fc85d46025b56b2713d231c1e642280a26422e3513872e211d874c98e0f2ddc7aab6889f1cc5094b2059eefab4857948885edaeec9facadf2aed0b8edf28e6db0291b3b1cf166ef8f1590137f38c762e343154f7cae70649e975c51942f0c4fa128566c70acc5c3ce1c6ebbac9820a271f066ef9be190135f509fd192a2be83a9999d3bd089a2a462490d61bc2b9509211609a0281641e5190d39c913a0a5d7cb777d37ad96182fa3285620ca789777c7fde2b6cb8a09221d4714e527db8f45ba0ae12f3c72e2b98dca5ef876c9fec7b36783a264e7633cf5eeb85fdc7659e11ff538722af08f9e3d1cf55a84b9fcc889b7d6296e7ba4b475b3953c4451bed9d9bbbc789195c87ac67975f98c9e15a7d66e117878770f8e87dd82999a0e7292cac4b5105916bcf0d9dbad27573539f6a5a3ed284a26628f35747a37de85dbae4cd8150b970df36c6ff4c8a6c8894760e3db15658b89ddd45194ecc43c1cefc26d5776f40a3d95031cbb86c615aa5058aa829c786389f1a1f2e7be616e31b195078a920517e35d59e0f0c82201d98cf28d5f1d62338a455cd6a32127d659d98829635c599672e54cc850948b4b1a72c6d42dc2f6c5bd1e55b97aaadba3944936840464a1d71d4f312defb265901397814a72a52ffdb8f8c8b379a62b8af2b9832f5f55b234cf74147bdd9fe37e15834675d212d8d13178efcee3691f11e88c0072e28c5bc6b78a3ab695bd7257c6c7361ffcd9c197509424667b56e096260909b70e09dcf762e7f6f67e872ff35a0a01e42405491e0105c3c76d2de5b292158a924469cbd2798e6a929e3abeade8dee7f85d5e8c2e0119f2625ade2df321276e918c7be54af4f0e85eba315194b71733ea354b94f12e179b164919d3f27070850072e20ac67822d93da9e499cd470fbd84437b9321e35d260a2ef22720d3f2ec96cf1fa3a4809cb8823126bbdf737a52c933278e483101eeaa73fff0c4aab6ed66fa5ce84680ddf2ae581c397101a34c9994effcae0b09e54a02453108f970dc6f2e53f05c35021c069cbf459193fc19c63c9a32495b3214c5c0d2bad6dbe37ed3c227506102c6415b0a57d087aa2127f9421687c1f9ec587490bd28caada331cd0fdddad6e8fe7857cdc2530eccc12bca106012254f53222779012cec7cc9a2c3e0bcb249791987f68c77a5340a025c20209328bb8f0fbb90909649202779985dce587cf2d63cdecfeb5514a56375755e04791902e9087ce7a90edc79a503933b0c39c9cd28530cd9b1e8ccc963a604ed866bae28cf368dd825963d3e6ebbb2f3d1e469cff004eebc9cd91a3971c62d26ce54f277cce530ef84d70c45d1f3881439ee77b2b62a01069710708780b8f3c2f98a0394c88903686736c0db3917cb511e565f1245d1f6d0ad632db55631110f027608480785212f3bc0e2719113bbc4e2f1031fe64a2ab4b647a46c59793209453eb7b8edca879e62efcabae1db9f38a458a5bcae0e72629b704886b992caada7a230de95d40cb87591c09ece1186bc6cf1444e6ce10ad7305752d10d4559535a9f14aef66d6ff322b72ab8609c15a26eb154241d86bc6c191239b1852b74c35c49a51745b9e5c0ab5a1d91e2e271bf15475a937872ab390119f2faf1f347358760bdfac889755631d9b41886d55c394bacd511298f35744e9795e4644204083823b0b5ad9f8d8d16d121271641c5a3953ffb0d1bb1038daa95a274af71ed3098c2a2d381da8dccc34840363686b158e12b137262d52672027ce18827e7005a2d81cd78fa288a8be35d9525133631135d7d02b2b19153e5ad981939b14229262ee85d3c01de52966e441245d1e1d02dc6bbdc682ca4918d809c2a7fb067345b0c9eb1efc4621b58f8cced1663862d9a260eed8756bab39ead303615360b529e9010f8c9f3c7425292d01683de496ed3c84693a2ae5772c70b6b0c1d14c5ade37e2ba6fac36a46ca153001b6a1e4340072921351accc9793167397238f18ca2bca96a5519ad6cac392bc1a24811fd341c98a1f39c98a27168bdc0c7ca6fa88a2dc3c55a5eaa15b838593fd6b9765aabbf5f0c2a931eb9189a91b01e6e4b35b1c39c9ca677ca874efcfb3c688d2c32b4ebcfe85e1295515c595f1aeb2fec351b22865f59dc0437bba710d99893a7292894c3cbc7ce71dc19e6892ad708e9e297c440ae35d8e5a042fd923c03ef92cbc90938c7016f4b6951c7822e3e3c83e50555164bc6bbca92e4fb3e0b62b4f803abc2efbe459349cd6d0c8495a2cf1c0f21ddfcdf82ce20f0c45a92baa88783d928bdfbab63239c8e63d6ebb6c02d3343a8b86d31a1e39498b25ee9e2bd28b83d3d72a215414e5abc78e29768ce3b6c6c1842a720901af08c8a2611c79a5c2454e5299c443ca5ebe2bfd038542d53b22e570d948fee35db8ed52a88d7b5895fb76757a987a3493464ed2d84df9ae895967f51425fff12edc7699cd838b2c04e8a0a4c2414e529944c973709ad2db0c524c515eae77f3b85f9b2c89ae17013c0d27d91b394902122b6e7b245a9e83932b60ff5e14e56b875ad538742bffe37e71db65bf0569fa86ec6adcb2b747d3caa7ab3672924ca5f455f5674d92eb7ce65e1987f6c75a6ad356d062206ebb2c82229a10b8efe5137030092027268af885865d93c4faaba1285b5632de956855ae3d24400725112e72924823a66dd7c4a4a080a2e439de553cd667d2e002023909d04131112127268a9838a2d76dd664aef20957a228ef2d72edb8dc8484fdbbcc67bcab6484d170ff2ca5404e74504c232227268a5869ebe6b91bbdaf6e6c8ff6318eaf374ceb6d406aef2b81875af913240e1c39996d76faec35b1f89d45fa88947c8efb2d1e386e1111d1206010e8e81d6393bca0404e66bf081db6c1dbfdf823ad28dd6b1c8ed795f51cb10b8af8106093bcb401e424fe2188f360b53d7439feda0d4589e21129af2e9f715c6b5e84805d02b249be6b68dcee5b8ac5474ee2062ddd7bbf627675b13aa228513c742b9ff1aed252a4c8c516a44b52f7bda8bb172fe424161b1f52f25c13173fe2881e91e27cbcab70d2457a24a50901390745f30e0a72225d131674e5fedea3a828071a0b72578c1810708f80288a7b89452f25e444e4449dd3e03d6d80915314c7c7fd969e665fbda74d49d9c4e5247965eb66a162bacb89785551ec34780b46771e4514e59b9dbd5139744b8efbed5fbbcc416d4ba7471dbcc52b109093e475760aa9bb9c94eca36b62ef9740b41cdaef595164af7ac486407e04b6eed777bc4b6b3989af0fee3b985fe3d1f1ed08298ab3f12edc76e9d8ac5daab3ce2b86b59613d6073bfe82a2a22832de35b2caf67e46dc76396e18bc2804b45d31acb19c8c0f151f798ed6ef9880a128179734384ec19f17db5696fa9311b940c020b0e3f0d0c8b88e6bcdf59593e223cf32099fe7f72f8af2b9832f87fc18c76d8d8376ab89db2ebbc4889f484026e477b4db6e75892944f45a5f396112dead261bf223520e978d8c37d5d9aa2c6ebb6ce122722a013d7d0c6b2a2705c3c799844ffd061c87845c515ad7563aae1a2f42c00101f1317cb047bbe5e69aca095b171d7c21d95f1145797bb1ed49efec69baf5d4c178176ebbdc82af6d3a5bdbb43bd6535339293af2acb6addcbb8a7ff450480fdd92f1aec9da2a5b152fc36d972d5e444e212013f229618a07e8282772521687f87ad4ae437b444a3ec7fd7ac48a64d5262087feea36dea5a39c941c7854ed761c6cedc2a9285b56da73c3b57046c79539c1b61cf5727f78b75e2ebc749413b69b78fddd8650517657f6db1aef2a9a99f09a12e92b4f40b7f12eede4a4a8631bdb4d7cf88c45516e1d8d85ea1847c6bb7cb03b592412900d28dbdb3572e1a59d9c141f7926d1de5c7b47206c0eed772db7b151b97c8013e3bd6b1a1aa5acd57e460de504c72afe7dcca152946717754d979558acfc82497b732d1693259a6e04b41aefd24b4e18e9f2ff630e95a2383eeed77f6ee4a80601adc6bbf4921346ba02f9440d4509c3a15baf2e9fb148a0fcf83e8b31890681ec04f419efd24d4e18e9cadef2bd7a2a8af2a5a3ed812bca630d9d16c7bb8a465928ec5563d02ddd3d2774f1b6a2919cc86159ace90af04b0ec911298c7705d806f4cc5a9ffd8c1ac949c9c1c7f46ccde1a9751814c5fa785745d95478d051924813d0c47f974672829fae307c9086a2ac29ad0faa30db17f75accba68c1b4c59844834076029a8c77e92227e2911e3f5dd95bbc6f4f45516e39f06a50876ec971bffd6b97f9565932828010107ff55d43e3caa3d0454e8a4ebca2bc2da355c1008f48d9b3a2c80a2bdc7659a1441c8b045ed0e07c465de4a4f8309be12d367bffa205a5285b967659a9246ebbac50228e45027b3a472cc68c6e345de4a4a8fbd5e81a49e19207a2288c7729dca2425bb59d1a1c7fa2859cc801272c110eed67268af247b15a9f8bd7de947bbc0bb75d3e1b45f9ec761f1f56bb8e5ac8091327216fc4fe3bb4b772dc2f6ebb42de6c2257bc3dc7151fefcafd379ad7362becdd57f0fa7f4d4d159795178d6ff8786a7625fb1e98e9da1f2b2a8eadb862aae992d40839438aba9887cf0929e008a228b1b3d67d37e693376f39ee77bca9aeecb876a779076c66bdb3577efa247839a9fcc5c78a7af71bcd2cad9c543ef6e98253712f0583c59f8f399313967545e133f659515ad7565e9c554ee26ebb6aae8b0239ca180d02cacb49c0835de53b6e172d79bd37e37e3189606889e3f62213278edfe5459f0988a2dc3c55e5cfa15b39c7bb70dbe5b3f575c84eede993207b2745c7772e7cf26bd286ce5d5c98d89264f8abecd77f333136593c7cb07c3c7ed8f27347a62e5beeb0a84c9c24b20dfff515275eaf5fd4786b55d1f88cb73e4e18ef0a7f6350af84327db2bea94abd7a19350aac7752706aa8e2818fa6c55a303152d6b1adbafb79434b6e7df2d40bc7acfa154f4d9089935426210ff1ed889413cb2bb3a3a859782a7b049e42c01601b5c7bb029393855b3e57341aef79e4fcf7854da57ff216ab87e8a5a646ef249549f843fc51942d2b397231fc6d41a9122227ee9bb3f8d0afcb5edb9c29ddd32595932baf357ea61a2fce14cd4ab838a5b7128d38212460284a5d51857765db5dd93f59abecc88377dc48391f02077b943dfe2480de890c73553ef047863da6ca164d35ac4db2cdf4e2f3867ee74ee367f4da2f273db5755b74e2655bf1891c2a02a2285f3d76ccd343b78eb564db41593d65a9031d2a681426e404c41d64c84be8b87801c849d5831f5a3035eb5cf3e4bbfee57499877f1e160e1c708c8617c340c0eb235218ef0a8395b52a437b3f72e292c14b5ff96171c70e23b1536bdf2b235a2e259c3e99050307d33f20343a043c5514c6bba2d3101429a9c2679ff8da3b89af007ee216b3519c5affbb45c777159c9a733c20b7f26346c8ffa2a80f39c99f62f02978aa28bdcd8b32d5b0a27b5fa6478443c0190106bb9c714b7eabfcf9db139d7e57df7753cdcfde5374628f194f6ee5c7bccdf3820d8c79020cd5eba2285f3bd4eac5a15bd68ffb0d15100a135d02aa6e66f4b577b2607cd0cf1650d837ebbbc5cf4cc9cb53025e38b47faca173baccf94a744feb4be24a1238d4a3e60a755fe52416f3353be6e195fc14bd5094ee354bd3b2aa6adb9e369c4008e443a043d1d978879e4b9ca11cddf4c582cb3f95f46ec5af3f5bd4d96a040ebeffe7494ff3b9651e3e1f7a617e571425b6eaa26d1327dc2aa48c7735bee45662a403811c04dafbd53c37de5739910d25a9984f97cc2d1476e67f3e354d238479f84c641408174559b2e2a2fba7dc511419effa0d05a050858810507536ded7d1a70cb6f6a40cec87cf405b9de01bdbdd3cc6b17fedb2b46870db95160b817912e81a52b083e2c9af727ba017945b8c5f6c31de99680b46ddf9bbd54e9ec4f59b808bc738ee59e16b4fdd6f52e41732023da393212b910bc509fe1312672a59ea21c35fbd9f3a9c2542a64785fdec38c9c446a970b70edddab2b4eb4aa5c05099501350d2537d087a27de189d55c2de700d63aa461f25cf43b7060b27d38e77e1b62b8c268f7e994627bc3dce271042caca49c1949a2bbb036925e1cf5414e50bc353792a0ae35de137b43225ece863ee243ac6e49893e8d8ca9d92e67f44caae3a5fb7d9ba536d52892601251d412ada3b191f8a661ba3d47911c853518ce37e934a80dbae2420dcba42e0e4a9e99171d566e3d59493421c09bbd2e42398489e8ad2ba36c771bf11444291434aa043b9cd8c6aca899c361fd21644b1bc27208af2cdce5e67876e6d6b4c1eef5a303eec7d91c9414702eacdc6ab2927ac12d6f1eb4ca8b36387f6a9e35d1547663d002524cf25045c20d0d1abda6cbc9a72523049efc485e61ee9241c2b4ac7eaea48579cc2432028026aca09bd93a0da53a8f275a628cf3625ff2d5258743a54f5a2306a10d8d399dcd2a25e2f35e524ea56a1fc6e113014c5d6a15ba9c7fd56964cb8551ed28180c204d49413369d28dc64ed564d14c5ee1129c75a6aede6427c08d825d03daada9f296aca895dbb125f7902b61465cbca792e150a630afac350dee2e1af60cf3072127a2b150c1f0f7d1929600004ac2b4ad27857c5547f00c5254b0d0828b69351c1dec982d12e0dda215574424014e5edc5e9cff14d4a8ef1ae2420dc7a4140b19d8c0aca891756274d65087cf490a543b75e6f9836ab5c3835665e730101086422a0a09ce09a3e93b10937085839744b8efb9d2e2b31e297f53b397107da10c84940b18df10aca49c1e4bc79d49c1625828604ac284af71a4bc3621ad2a3ca6e11506c63bc8272e296a549476d023915e5d5e5330601dc76a9dd12a89d5b049013b748924ef40888a2dc3a1acb74e89639de85dbaee8999612074140413961ee24888614d53cb33bb41f5a591fd58a51ee281060ee24ec56e258dfb05b2864e5cba228e671bfb8ed0a99d114298e6247fc2ad83b51a4a1510d1f096452942d4b67f730e1b6cb476b90555409202751b51ce576978028cadff58d261dba355838d9bf7699bb19911a045425809ca86a59ea659bc0b2d1fe2f1d6d4f521463bc0bb75db669f2827e04149493c2fe03fad9911abb4320f5881463bc0bb75deef02595f90414732aaca09c144c8cce37197710b04120495164bc6bbca9cec6fb44858065028a391556504e2c9b928810484fc0509435a5b3ab845bd756168ff5a58f4a280420f00601e4e40d12fc1f02090444516e39f0aa718ce3b6c6c192919e84875c4200026908202769a010040183807144cae1b291d1da8530810004b213404eb2f3e1a9ee040c4539d830a03b08ea0f815c0490935c8478ae3d015194ea72e444fb7600805c048a7245e039047427f07acd153bc62ed39d02f587402e02c8492e423cd795c058e9e2ad656ffd71fff97ddd65ba32a0de10b0410039b1018ba89a10385c7df17d93573c3ab83c36ac498da926045c20809cb8009124d420305554fe7cc575778f5cd0d653ad468da80504fc24809cf8499bbc424aa0bb6acdd6824bbfdfb33ec6c1d0213511c58a0001e4240246a2881e1190eec8c18a8bbf35b2a9ad97ee88478c49361b81f212a5d6d62227d98ccd335509c834fb2f4bafbf7fe09cbe934cb3ab6ae408d46b659d52db63159493a9a517169d7825024d892206414056fdfed7c4c54cb307c19e3c1527a0a09c286e31aae78880744776955d1e9f66ef665ccb11415e82402e02c8492e423c8f38019966ffc5cc55f7f4af66d56fc42d49f1c34e003909bb85289f330232cdfe5ae5153f18dec834bb3380bc0501bb049013bbc4881f7602830b973f5ef4d6f8347b17d3ec613716e55389808272325dbb8aa97895daa8f5bac834fb5d63976d1f5862fd156242204002eb1a2b03ccddf5ac159493d3c54a59c87593ab9720ceb5d4b329358a220105e5248a66a0ccce088873adc7a72f619add193dde8280bb04149493998a067719915ad808cc4db3e35c2b6cb6a13c7608342f566a7a4f4539a95c6ac7a0c48d12019c6b45c95a943517818a12a57e032b55995cb6e379540918ceb5e2d3ecbd4cb347d588945b79020aca09835d2ab5dab969769c6ba96457ea7286407d45b14a24149493d3554d2a5948dbbae05c4b5bd3eb53f1866ae64ef4b13635f59d00ceb57c474e861070878082bd1301335dbbb2b0ff903b8448c52f0273d3ec1ca9eb1773f2099040739d525d1321a9a69c9c2ea90ab09590b52d0273ab7e39c3ca163822479c8062cbbac41a6aca097e5622f1a1e15c2b1266a2901e11a077e211589793c5cf8acb40dd4e6e769a7d60b9db09931e04224380de49344c25bd93681454b3521ad3ecdfeebfa4af5bb55163cd2c49755d20a0d8967821a2e660d7e912bc40bad0dc5d4c02e75a2ec224293508d03b89861dd9c918123bcd4db3e35c2b2426a118a121d05cab5a1f5dd1de093b1983fe668c69f6eff7ac8f9d0cba28e40f815012a82c536a4bbc3056534ea462534b2fe4102dff3fa239e75a9c61e53f7d728c0e01f59675097b65e564a6025f81be7e5b38d7f2153799459c407d4549c46b90a6f80acb49639aea12e401019966bf6ff28a470797c7d8cdee015e925492c0cac50bd5ab97b272c25a61af1bab8c6b3d5f71dddd2317b431cdee356bd2578e807aab84c544cacac94c05876879f509ce39d7629add2bc6a4ab388115b5e5ead5505d3959dca29eb582ad9131cdfead914d6d38d70ad612e41e7d028ab9a6370ca2ac9c48f5f02becd64727d3ecbf2cbdfefe8173fa38c3ca2da6a4a33181758d6aeeb3565b4ecec14d7d9edf2c6758e50990d721904aa0be52b51d27461d95969345e7c4624fa4da92909c0470ae9513111120e098c092ca52c7ef86f945a5e5a46e7598d187b36c32cdfe8b99abeee95fcdaadf701a88522940605d13835d5133e374e345512b7260e59d73aec5347b604620635d08a8e7adcbb09ccabd13a921b3f1393f509c6be544440408b84840dcaba8e7adcbe0a3b89ccc2c5cca6c7ca62f41a6d9ef1abb6c3bceb53201221c021e105851a7e08e138393e272228e208b8f3ee7419388709273ceb538c32ac266a4e85125d0ace20646c318cacbc99ba2dae83c283767587900952421608f80aaf3f04241713999616fbcf8eac7b996bdef9dd810f090c0aafa0a0f530f3469c5e544d8ea7cf009ceb502fdb8c81c02c90454dd0f6fd453033969d0ee1c2dc3b9567c9abd97435f92bf67ee21102001254fcd32796a20274b2f8cbd62d657f10b9c6b296e60aa1771020a4f9c8865d497134d3633e25c2be2bf6728be160436aea855b89eeacb89184fe1e913c3b956fc0cabee6a859b295583800204d49e381103e921272a4e9fcc4db373a4ae02bf69a88206049013158c2cbd1365a64f70aea5428ba40e5a12507be2444caa45ef44a64f4e972c2c9888f651b48673adf819565d655a7e8c541a021126505eb2607d5355842b60a1e85ac88970985a12616f2bb3d3ec03cb2d1894281080401809ac5baaa653fa44d6dac849049d77e15c2bb1a5720d814813507ee244aca38b9c4c9e7d45f9ceef45a539e25c2b2a96a29c10b048e0d21535166346379a2e7272baaa69a662c982d1ee309b6a6e9abd8755bf6136146583803d0272387c43b5fa539ebac889185f3a28a5ad9bedb502bf62cfadfa8df67201bf78910f0422456043b3fa5d133188467232b1ea37c2262738d78ad4ef040a0b018704ae69a973f866a45ed3484ec4597d78960bcf4db39f54bf0b1ca92f82c242c0650232d2a5b053fa44581ac989547b72f9e525079e48acbfffd732cd7edfe4158f0e2e8fb19bdd7ffae40801df09e8b0a6cb80aa9b9c5c11949ccc39d7629addf7ef990c211020810d1aace932f0ea252753cd57f93fde3537cd4e7724c06f9aac21100401d90cafb617e144a87ac989d4dcb7f12e639afd5b239bda7a59f59bd8e4b88680460474d80c6f9a534339f17cbc6bceb916d3ec6643e302025a12d8749e166bba0cdb6a27279e8e77e15c4bcbdf18541a02e9096835d22508b49313a9b3ebe35dc634fbb7fb2fe9eb66d56ffaef8a50086848e0523d762f9a96d5514e4ead79af5bebbb649afd173357ddd3bf9a55bf6693e20202103008bc73fd12ad50e82827b29f314fff5d73ceb59866d7ea73a1b210b04c409fdd8b26121de5442aefd87f9731cdfefd9ef5319c6b998d880b08402085c0a696c529618a07682a27a7d6fcb65dff5d32cd7ed7d865db07f4eabd2adefca91e043c23704d4bad67698734614de544fcd5cb01f245275ec9699639e75a4cb3e78445040840e00c81e6ba321d3cd227595b5339110a13abde965d4e70ae95d456b88500042c12b87e9d8ec318facac964cb3b4eefbca36022790e44a6d99fafb8eeee910bda70ae65f1d3211a0420904040b69be8e3a72ba1de5aee3b31eb9fb40165ceb956b2c4986f70010108402007814d2d759565c53922a9f858dfde8958d3d88082732d151b367582406004aed76cbb89095a6b39910d28bf6cfce44f8fd5f7e15ccb6c115c400002791090d34d349c8437802dc8839b0aafca0694be293ca3a8604aea00813010b866b576eb834decbacbc95bd7d4cbe655130717108000041c13905f26f22bc5f1eb517f51773911fb69b87935eaad96f243209c0434ff65829cc4deb95edfbf26c2f94d522a08449480863be1132d859cc464499fe68d20b141700d0108382320bf46b49d8437882127710e375cdce8ac01f116042000018300bf469093784b90bf2964791f5f05042000016704e89a0837e464b6f1dcf0663a28cebe23de820004629bced5ce1d7daad591935926eb9baae8a0a4b60f422000819c04e45787fc02c9194df908c8c99c89e9a0ccb1e00a0210b04c805f1d062ae464aec9c8df17724ac1dc3d5710800004721190ad8b744d0c48c8c9bcc6a2e72905f31070030108d82170c3454cbbcef2424ee6351c7caeccc3c10d0420909580e65e5592d82027494062fcad914c847b08402003818f5fb322c3131d83919364abd3414926c23d0420908e000bba92a820274940e2b7fcc591060a411080c07c022ce89acf836d8c493ccedcb207251d15c22000813902744de658bc7145efe40d12f3ffcfdf1df37970070108cc23c0af887938cedc2027a94ce2217450d2732114021088c5e89aa46d05c8495a2cf1c00fbc6559c6673c8000043426c02f87b4c6474ed2628907aeaaafe01c948c747800015d09c8817bf2cb41d7da67ab3772928d8e1c60505e02a26c88780601ad08c82f04ce35c964717e576622130f977350deb5be215b0c9e4100023a11906dce727eab4e35b65157e42407acf75dd2247e147244e2310420a00101f955f09b172ed5a0a20eab889ce40677d36567e58e440c08404075026c70ce6e61e4243b9ff8d38d2b6a655d60ee78c4800004d425c0e2e09cb6454e72228a47f8d8d5675b8a47240840405102fc12c86958e42427a27804999367398725524482808a04e4f3975f022ad6cccd3a21275669ca6273e6e4adc2221e0414222087b4ca921c852ae455559013ab6465752013715661110f020a11f8e065cb15aa8d8755414e6cc015475e979c5d6de305a2420002112720c3121c056fd186c8894550b3d13e7e4d33fbe4ed21233604224b40c6b79934b56e3de4c43aab784c19f2fae046b6a1d883466c08449480ec39630fbc75db2127d659cdc694d37fd986629b1a2f40206a0464645bf69c45add4419617397142ffe6eb5632e4e5041cef40202204e4039791ed8814362cc5444e9c58e2cc2a2f9a9a1374bc03814810102d6198cbaea59013bbc466e34b2f98555e0ed9f11a04c24d400e3a6298cb8189901307d0665f6195977376bc0981b01290d55c37bd85e5364ecc839c38a166bcc390977376bc0981b01290ddca0c7339334e91b3d778cb20203de277ae1f7978770f402000010508c82e939c9b163bfac75b8f754dc64ace5e54f1a6b3aacc5a9f9a9ae91a9e306f932e1aaa4a4a8b92ff7c97579ed9db353a3951bcb0e2f2e6eaea881fcc859c2419ddf6adb4bf3d9d231d7de3b6dfe4050840204c042cfae67a6ccfbe6f6d199482bf6bc3f2443969ef1dbbf1fb3b3355e83f3fb1b1b936d989e4e3adad5f7ca0d7784522445d4e92d532130bc23311907ef1c7ae66ab7c263c8443201a046465b07cc839cb2a5d13434b2466e1fcd8c70687e707e4b893a40c2d39b97f7b8ea811794cefc40543adaaaf90adf2776c3bec425a2401010804414056d6c8879c29e7db1f797d786cb86f78f4c9335ff9c8cb8f56bee9ed49915f3cd4991492e55686b93e7dd7b658ac44e22c5cbd314bcc083d424edc31966c95df7362646b5bbf3bc9910a0420e02301f1f3987d65f09d3be6a462f0b97bc70fee4c9593833db3bd936bcf6ffcf36b920fdc5b5a15570ef3df4f9e7ea96d685e88f928ba17c8896bb693c585ed7d634ca2b806948420e00b019932f9d0e5c9bffdb3e45c73d9fbe4272982f4369e6a9f0d5b531f9f232988c56aca0bd34e87bc7cb4f75bdb46925250e0163971cd88c624ca6d0fb58d4dccb89628094100025e129029934f5db72a670e89479edcf9dc91d4f82712d6747d67cb21f931e2b4d4957ef1bde75fb0746e186d687cf2967b9f8bc5e69684a5a616d110a6e2dd349c3189e2668aa40501087849e02fde768e95537b6fbe6e95f993b6389d834369c3dbfa4efdc1f777fe685797f9f4fbbf7ae6e0e8ac967cf0b246335c810be4c46523ca240a0724b8cc94e420e00d012bbb4c2ce67ca837dbb2ae7f7a68aface392a47ebdafe3ce1765182cfeef6fdfbde6e2e54af5519013c3b26efe578e95c69d979b40490b021e10908fd4c513e08f25c8c99fbc75e5d7deb75e7e5a1ae6369afcdbf6eeeee1537f79efec04cbc696bab7adadf7a05a4126c9dc8927f465d1a14ca2302def095c128540de0464fa5d3ed2bc934948a0a8e68397d5c8fd790d15bf794183f1e0fca6caebbff9bc71fde08e43053dfb8c95c112f2fe8b1a650b7df7c8dc2efacec131e9b6a4dd3c6fa410feff16f40cc4b777f2cf7502077b469996779d2a0942207f0232fdfe95f7acb132659236af0d7fb7d508ffad0dcbbffc8ef8347ea27b95a4d55cb76c7ee1e7af8d499cd3a74f1714cc0e73a54dd6084cbb793e4bfc503da277e29539645a5efefcb9fdf1435e6540ba10808023029fbfbec5b196a4cd509675fdceb76777b6ffc53b5a3eb0a1294d340b5a92e6ad48053177e2a1b96463d4c7aeb2b19eddc3a2903404207086807c925976bf3b83545e34d7edd8fcda9c4358992c31ba26ce928ddc5bf44ebc3519bbe5bde54bea10b043409672c92769e70d4b71975495b62c2e6ceb9d96d86d4707fee2ded7de73a1ac009efce7875e8ec5ca8d24fef0cab37ffb4dc9cb829f3dd0f50f8fb41b11feef8d1734d694276d9eb7947d682221279e9be2139b564a1ef85ff11c341940202b013963d1c5a55c92555c3ddef8f7c96bd7fce5bdbb8dbb2dfbfae4e7ccf5ac96c8f5fb2f6912d57923faecff0f24785e112d4975399c143fe4b70c76f96120f1bf222b49fcc8893c2000817404e40374fd8cc5448fc2d79eb758d607a7cb391ef6830f5d9caa25992247371c39f1c376e27f4566ff50143f589307045208c8a7271fa0eb672cd6ce1fdcf9c895678b6c5cdd529798bf688c2cd64a3c1625f1692c563cff36da772c14f6cf7e2c1df68f353941e00d021e69c91bc9a7f9bf78e51a188b8f84457df02a4dddb206212759f1b8fd1045719b28e941201b01d96222fd12d7977265cb52e3670c76f96a7c69d6d2b8a589fb9a2b9941404b026889cf66e7f79acfc063a228e2c4d4ef5cc90f029a11404bfc373872e23ff3d8faa62ab63706c09d2c752220e76d33c6e5b3c191139f81cf66277ba9509460d093ab0604e4e3f262bba206e4f2aa22729217be7c5e4651f2a1c7bb10c844002dc944c6eb70e4c46bc2d9d24751b2d1e11904ec13404bec3373ed0de4c43594ce1242519c71e32d08a412404b5299f819829cf8493b7d5e284a7a2e8442c00e01b4c40e2d4fe222279e60b59b288a629718f1219048002d49a411d435bbe283229f265ff6cca781421004b212607f49563cbe3ea477e22beeec99b1673e3b1f9e422089005a920424d85be42458fec9b9a328c944b887400602f5957147ddec55cc8027806006bb02809e33cbaea1f16f3c71b0a36f3c674c2240404f02fefb09d693b3ad5ad33bb185cba7c80dd5f1e319381fc527dc641335026849382d46ef249c7689976a647cf2c7cf1fe554e0f05a8892054140cee89573155d3f0b2b88aaa896277212768bfee8d9c30fefee097b29291f047c21f0cef5f51fbafc6c5fb22213db049013dbc8fc7f61cbde9e3bb61df63f5f728440a808b0b92454e6482d0c7292ca248c21bb8f0f7ffdf103631333612c1c658280c7045810ec31607792474edce1e8432ab2c9f18ea73a58eee5036ab20815019978ffd475ab647d4aa84a456152092027a94cc21b2293f3dfd9dab1f3f050788b48c920e02a814bceaefef835cd4cbcbb0ad5abc49013afc87a97eebd3b8fdff762a777e993320442428089f79018c2623190138ba0c2156d7b7bbf7453984a099755288d7b0464b2443a251b57d4ba972429794e0039f11cb147193095e21158920d9c009325819bc05901901367dc42f116fb1c4361060ae12a01d9a5f8894d2b5d4d92c47c22809cf804dabb6c6457ca9ddb8f32f0e51d6152f687800c707d70e35972f68f3fd9918beb049013d7910690202e2303804e96ae129001ae8f5ddd8c7b6057a1fa9d1872e23771eff2c31d8b776c49d95302b282eb868b1b590dec29641f12474e7c80ec5f16b279fe3b5bdb7b4626fdcb929c2090070139b3e4e3d7ac58df5495471abc1a1602c849582ce15639d8eae81649d2f19a005b14bd26ec73fac889cfc07dca8e8d293e81261b4704d856e2085bd85f424ec26e21c7e5a39be2181d2f7a4a605d63e5cdd7ad64a6c453c881248e9c0482ddbf4ce9a6f8c79a9c72116029702e42d17e8e9c44db7e564acf6e472b9488e335014e51f49a70e0e92327819bc0a702b0e8cb27d064934280e55b2948d40c404ed4b46bda5a493745ce09c61b715a38047a44403694bcef9226f4b93f1c000006c7494441548f1227d95011404e42650e3f0a235be8ef78eaf09ece113f32230f8d09c894fbc7ae3e9b63aff46902c8893eb69e5753c6bee6e1e0c6550232ba75d36567e15ede55a811480c39898091bc2ba29cc4f5cbdd5db88ff48eb06e29cbdaad77ad6f60744b37bb1bf5454ef4b4fb5cad65ec4b6653b6b6f5cf05710501470458bbe5089b3a2f2127ead8329f9a30a1920f3dde659a8436200490139ac11c019950b96f5727b3f47344b8ca454084e4863737e2c33117272d9e23275a98d9562599a5b7854bdbc80889b6a6cf5471e4241319ddc3e590c7fb5eeac4d7bdeeed205dfd65e1d60d1735726c623a365a8721275a9b3f67e54554b6eeef67f82b27284d2220249a18da5935911367dcf47a8b3915bdec9daeb672f8eef5eb96d02349c786b05902c8094dc12a0144c52a29b5e2c92157efbaa081c976b5acea496d90134fb02a9c28fb5414366e52d5641f8978dcc24b4a12166e3311404e3291213c1b01c39b243beab3318aec336367fb3bd7d773c255646d184cc1919360b82b932b73f5ca98522a226b7faf595dcb04894a36f5b32ec8899fb495cd4b46c01edaddfd645b1feebfa26863e98e6c6aa9bb7efd12c6b5a268bef0941939098f2d225f121901dbd13ef8d09eee8ebef1c857468f0ad01dd1c3ce3ed51239f109b456d94867457c4a3ed9d6cb2ec870da5db68f6c68aea13b124eeb44b754c849746d1781921fec197d7877f70b1d830c8285c15a868a5cd352b7aabe220ce5a10c8a11404e14336848abb3bdbd5fc6c1d09540cc2353239736d76c5851c3795681f0d72753e4441f5b87a2a6e88a6f6640457c434d460601e48496100c01d963ff42fb80780363dede5d038837944b9b175dd25ccd8896bb60492d2701e424272222784b40e6edf71c1f9171b03d2746986271c65a3a22eb96561a235aec3d74c690b7f227809ce4cf90145c23205d169116e9b2e0c33827534342562e5eb8aea912875a397111c10702c8890f90c9c20901a425959a2ccd929d22cdb5e522218c65a5f221245802c849b0fcc9dd12019196433d273bfac7dafbc6749b6b91b9109110d18f15b5e5ec5ab7d45c88141001e42420f0649b0701a3e372a8f764cfe88462ea2243582beb168a84d45794acac5fd85c5bc65c481e2d85577d25809cf88a9bccbc20209b25e3bad23b1e3981413cbc680fa4191401e42428f2e4eb2101f11ed6d13f3e3a31251ad33d724a7cbdc4af83f32426bd8d8a9222a9b00c5bc97feb2b8a975497327fee610b20e920082027415027cfe008c8bae49ed149c95f969019a548529a437d2773ae579629f12595a5a9953065a379715c3fca8b1730619e4a891055092027aa5a967a41000210f095c0025f732333084000021050940072a2a861a916042000017f092027fef22637084000028a12404e14352cd582000420e02f01e4c45fdee406010840405102c889a286a55a10800004fc25809cf8cb9bdc20000108284a003951d4b0540b02108080bf0490137f79931b04200001450920278a1a966a41000210f0970072e22f6f7283000420a02801e44451c3522d08400002fe12404efce54d6e108000041425809c286a58aa05010840c05f02c889bfbcc90d02108080a2049013450d4bb520000108f84b0039f19737b94100021050940072a2a861a916042000017f092027fef22637084000028a12404e14352cd582000420e02f01e4c45fdee406010840405102c889a286a55a10800004fc25809cf8cb9bdc20000108284a003951d4b0540b02108080bf0490137f79931b04200001450920278a1a966a41000210f0970072e22f6f7283000420a02801e44451c3522d08400002fe12404efce54d6e108000041425809c286a58aa05010840c05f02c889bfbcc90d02108080a2049013450d4bb520000108f84b0039f19737b94100021050940072a2a861a916042000017f092027fef22637084000028a12404e14352cd582000420e02f01e4c45fdee406010840405102c889a286a55a10800004fc25809cf8cb9bdc20000108284a003951d4b0540b02108080bf0490137f79931b04200001450920278a1a966a41000210f0970072e22f6f7283000420a02801e44451c3522d08400002fe12404efce54d6e108000041425809c286a58aa05010840c05f02c889bfbcc90d02108080a2049013450d4bb520000108f84b0039f19737b94100021050940072a2a861a916042000017f092027fef22637084000028a12404e14352cd582000420e02f01e4c45fdee406010840405102c889a286a55a10800004fc25809cf8cb9bdc20000108284a003951d4b0540b02108080bf0490137f79931b04200001450920278a1a966a41000210f0970072e22f6f7283000420a02801e44451c3522d08400002fe12404efce54d6e108000041425f0ff014a1ce9eeb175659f0000000049454e44ae426082}\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u34013?\u33394?\u30340?\u23601?\u26159?push\u20107?\u20214?\u65292?\u40644?\u33394?\u30340?\u26159?create\u31561?\u31561?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u21040?\u36825?\u37324?\u25105?\u20204?\u31639?\u26159?\u30693?\u36947?\u20102?OSRC\u30340?\u25968?\u25454?\u24211?\u37096?\u20998?\u26159?\u22914?\u20309?\u24037?\u20316?\u30340?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs28 Redis \u26597?\u35810?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u20027?\u35201?\u20195?\u30721?\u22914?\u19979?\u25152?\u31034?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 def get_vector(user, pipe=None):\line +\line + r = redis.StrictRedis(host='localhost', port=6379, db=0)\line + no_pipe = False\line + if pipe is None:\line + pipe = pipe = r.pipeline()\line + no_pipe = True\line +\line + user = user.lower()\line + pipe.zscore(get_format("user"), user)\line + pipe.hgetall(get_format("user:\{0\}:day".format(user)))\line + pipe.zrevrange(get_format("user:\{0\}:event".format(user)), 0, -1,\line + withscores=True)\line + pipe.zcard(get_format("user:\{0\}:contribution".format(user)))\line + pipe.zcard(get_format("user:\{0\}:connection".format(user)))\line + pipe.zcard(get_format("user:\{0\}:repo".format(user)))\line + pipe.zcard(get_format("user:\{0\}:lang".format(user)))\line + pipe.zrevrange(get_format("user:\{0\}:lang".format(user)), 0, -1,\line + withscores=True)\line +\line + if no_pipe:\line + return pipe.execute()\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u32467?\u26524?\u22312?\u19978?\u19968?\u31687?\u20013?\u26174?\u31034?\u20986?\u26469?\u20102?\u65292?\u20063?\u23601?\u26159?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 [227.0, \{'1': '51', '0': '41', '3': '17', '2': '34', '5': '28', '4': '22', '6': '34'\}, [('PushEvent', 154.0), ('CreateEvent', 41.0), ('WatchEvent', 18.0), ('GollumEvent', 8.0), ('MemberEvent', 3.0), ('ForkEvent', 2.0), ('ReleaseEvent', 1.0)], 0, 0, 0, 11, [('CSS', 74.0), ('JavaScript', 60.0), ('Ruby', 12.0), ('TeX', 6.0), ('Python', 6.0), ('Java', 5.0), ('C++', 5.0), ('Assembly', 5.0), ('C', 3.0), ('Emacs Lisp', 2.0), ('Arduino', 2.0)]]\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u26377?\u24847?\u24605?\u30340?\u26159?\u22312?\u36825?\u37324?\u29983?\u25104?\u20102?\u21644?\u33258?\u24049?\u30456?\u36817?\u30340?\u20154?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 ['alesdokshanin', 'hjiawei', 'andrewreedy', 'christj6', '1995eaton']\par} +{\pard \ql \f0 \sa180 \li0 \fi0 osrc\u26368?\u26377?\u24847?\u24605?\u30340?\u19968?\u37096?\u20998?\u33707?\u36807?\u20110?flann\u65292?\u24403?\u28982?\u35828?\u30340?\u20063?\u26159?\u31995?\u32479?\u21518?\u21488?\u30340?\u35774?\u35745?\u30340?\u19968?\u20010?\u24456?\u20851?\u38190?\u21450?\u26377?\u24847?\u24605?\u30340?\u37096?\u20998?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 \u37051?\u36817?\u31639?\u27861?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u37051?\u36817?\u31639?\u27861?\u26159?\u22312?\u36825?\u20010?\u20998?\u26512?\u36807?\u31243?\u20013?\u19968?\u20010?\u24456?\u26377?\u24847?\u24605?\u30340?\u19996?\u35199?\u12290?\par} +{\pard \ql \f0 \sa180 \li720 \fi0 \u37051?\u36817?\u31639?\u27861?\u65292?\u25110?\u32773?\u35828?K\u26368?\u36817?\u37051?(kNN\u65292?k-NearestNeighbor)\u20998?\u31867?\u31639?\u27861?\u21487?\u20197?\u35828?\u26159?\u25972?\u20010?\u25968?\u25454?\u25366?\u25496?\u20998?\u31867?\u25216?\u26415?\u20013?\u26368?\u31616?\u21333?\u30340?\u26041?\u27861?\u20102?\u12290?\u25152?\u35859?K\u26368?\u36817?\u37051?\u65292?\u23601?\u26159?k\u20010?\u26368?\u36817?\u30340?\u37051?\u23621?\u30340?\u24847?\u24605?\u65292?\u35828?\u30340?\u26159?\u27599?\u20010?\u26679?\u26412?\u37117?\u21487?\u20197?\u29992?\u22905?\u26368?\u25509?\u36817?\u30340?k\u20010?\u37051?\u23621?\u26469?\u20195?\u34920?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u25442?\u21477?\u35805?\u35828?\u65292?\u25105?\u20204?\u38656?\u35201?\u19968?\u20123?\u26679?\u26412?\u26469?\u24403?\u20316?\u25105?\u20204?\u30340?\u20998?\u26512?\u36164?\u26009?\u65292?\u36825?\u37324?\u19996?\u35199?\u29992?\u21040?\u30340?\u23601?\u26159?\u25105?\u20204?\u20043?\u21069?\u30340?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 [227.0, \{'1': '51', '0': '41', '3': '17', '2': '34', '5': '28', '4': '22', '6': '34'\}, [('PushEvent', 154.0), ('CreateEvent', 41.0), ('WatchEvent', 18.0), ('GollumEvent', 8.0), ('MemberEvent', 3.0), ('ForkEvent', 2.0), ('ReleaseEvent', 1.0)], 0, 0, 0, 11, [('CSS', 74.0), ('JavaScript', 60.0), ('Ruby', 12.0), ('TeX', 6.0), ('Python', 6.0), ('Java', 5.0), ('C++', 5.0), ('Assembly', 5.0), ('C', 3.0), ('Emacs Lisp', 2.0), ('Arduino', 2.0)]]\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u22312?\u20195?\u30721?\u20013?\u26159?\u26500?\u24314?\u20102?\u19968?\u20010?points.h5\u30340?\u25991?\u20214?\u26469?\u20998?\u26512?\u27599?\u20010?\u29992?\u25143?\u30340?points\u65292?\u20043?\u21518?\u20877?\u35760?\u24405?\u21040?hdf5\u25991?\u20214?\u20013?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 [ 0.00438596 0.18061674 0.2246696 0.14977974 0.07488987 0.0969163\line + 0.12334802 0.14977974 0. 0.18061674 0. 0. 0.\line + 0.00881057 0. 0. 0.03524229 0. 0.\line + 0.01321586 0. 0. 0. 0.6784141 0.\line + 0.07929515 0.00440529 1. 1. 1. 0.08333333\line + 0.26431718 0.02202643 0.05286344 0.02643172 0. 0.01321586\line + 0.02202643 0. 0. 0. 0. 0. 0.\line + 0. 0. 0.00881057 0. 0. 0. 0.\line + 0. 0. 0. 0. 0. 0. 0.\line + 0. 0. 0. 0. 0.00881057]\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u36825?\u37324?\u20998?\u26512?\u21040?\u29992?\u25143?\u30340?\u22823?\u37096?\u20998?\u34892?\u20026?\u65292?\u20877?\u25214?\u21040?\u19982?\u20854?\u34892?\u20026?\u30456?\u36817?\u30340?\u29992?\u25143?\u65292?\u20027?\u35201?\u30340?\u34892?\u20026?\u26377?\u19979?\u38754?\u36825?\u20123?:\par} +{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab \u27599?\u26143?\u26399?\u30340?\u24773?\u20917?\par} +{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab \u20107?\u20214?\u30340?\u31867?\u22411?\par} +{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab \u36129?\u29486?\u30340?\u25968?\u37327?\u65292?\u36830?\u25509?\u20197?\u21450?\u35821?\u35328?\par} +{\pard \ql \f0 \sa0 \li360 \fi-360 \bullet \tx360\tab \u26368?\u22810?\u30340?\u35821?\u35328?\sa180\par} +{\pard \ql \f0 \sa180 \li0 \fi0 osrc\u20013?\u29992?\u20110?\u35299?\u26512?\u30340?\u20195?\u30721?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 def parse_vector(results):\line + points = np.zeros(nvector)\line + total = int(results[0])\line +\line + points[0] = 1.0 / (total + 1)\line +\line + # Week means.\line + for k, v in results[1].iteritems():\line + points[1 + int(k)] = float(v) / total\line +\line + # Event types.\line + n = 8\line + for k, v in results[2]:\line + points[n + evttypes.index(k)] = float(v) / total\line +\line + # Number of contributions, connections and languages.\line + n += nevts\line + points[n] = 1.0 / (float(results[3]) + 1)\line + points[n + 1] = 1.0 / (float(results[4]) + 1)\line + points[n + 2] = 1.0 / (float(results[5]) + 1)\line + points[n + 3] = 1.0 / (float(results[6]) + 1)\line +\line + # Top languages.\line + n += 4\line + for k, v in results[7]:\line + if k in langs:\line + points[n + langs.index(k)] = float(v) / total\line + else:\line + # Unknown language.\line + points[-1] = float(v) / total\line +\line + return points\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u36825?\u26679?\u20063?\u23601?\u36820?\u22238?\u25105?\u20204?\u38656?\u35201?\u30340?\u28857?\u25968?\u65292?\u28982?\u21518?\u25105?\u20204?\u21487?\u20197?\u29992?{\f1 get_points}\u26469?\u33719?\u21462?\u36825?\u20123?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 def get_points(usernames):\line + r = redis.StrictRedis(host='localhost', port=6379, db=0)\line + pipe = r.pipeline()\line +\line + results = get_vector(usernames)\line + points = np.zeros([len(usernames), nvector])\line + points = parse_vector(results)\line + return points\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u23601?\u20250?\u24471?\u21040?\u25105?\u20204?\u30340?\u30456?\u24212?\u30340?\u25968?\u25454?\u65292?\u25509?\u30528?\u25214?\u25214?\u21644?\u33258?\u24049?\u37051?\u36817?\u30340?\u65292?\u30475?\u30475?\u32467?\u26524?\u12290?\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \f1 [ 0.01298701 0.19736842 0. 0.30263158 0.21052632 0.19736842\line + 0. 0.09210526 0. 0.22368421 0.01315789 0. 0.\line + 0. 0. 0. 0.01315789 0. 0.\line + 0.01315789 0. 0. 0. 0.73684211 0. 0.\line + 0. 1. 1. 1. 0.2 0.42105263\line + 0.09210526 0. 0. 0. 0. 0.23684211\line + 0. 0. 0.03947368 0. 0. 0. 0.\line + 0. 0. 0. 0. 0. 0. 0.\line + 0. 0. 0. 0. 0. 0. 0.\line + 0. 0. 0. 0. ]\par} +{\pard \ql \f0 \sa180 \li0 \fi0 \u30495?\u30475?\u19981?\u20986?\u26469?\u20004?\u32773?\u26377?\u20160?\u20040?\u30456?\u20284?\u30340?\u22320?\u26041? \u12290?\u12290?\u12290?\u12290?\par} }