Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qFNzN-0008NT-Uw for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Jun 2023 23:57:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1qFNzM-0005Md-AW for pgsql-hackers@arkaria.postgresql.org; Fri, 30 Jun 2023 23:57:20 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qFNzL-0005MU-8I for pgsql-hackers@lists.postgresql.org; Fri, 30 Jun 2023 23:57:19 +0000 Received: from mail-yw1-x1133.google.com ([2607:f8b0:4864:20::1133]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1qFNzE-001Mby-Bl for pgsql-hackers@postgresql.org; Fri, 30 Jun 2023 23:57:17 +0000 Received: by mail-yw1-x1133.google.com with SMTP id 00721157ae682-5776312eaddso10273667b3.3 for ; Fri, 30 Jun 2023 16:57:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=joeconway.com; s=google; t=1688169431; x=1690761431; h=subject:to:from:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=v9J0+NRAq1BwQhFvcuRhH1IOH8F8hA8WCqe8xPz+rCs=; b=i1sihD+rWVDFsA7NXVnU4+yBXezJ81t3q8E8L+51Y/N3IulWatL+U+BVTzxk/SHS6x uZZdzr/ui9dQtppDyZTjNd1RKqtRIPJ7priUNiP3yMyN9dFfBxpLV/4Nkt6Fymk2XdmY 1EErCl7doEyigyr/7CLrvD9L91kQZRbfP2xFEw4WJOqYuuqoGglYrNGEu6YZQrqpwwUW s7wz5KnAqZpFX79YfV64HpPv1YWqSWGFVe8XLju82URSQuWsYU7TRPkFLwQ6fKQ5swki GxwIEr9TSqnCDFhjm4S/P+MnHxPl+fWbHOiqVRbf0k3VkKA9Nk1AyWcriW83WzeW6uPV W2kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688169431; x=1690761431; h=subject:to:from:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=v9J0+NRAq1BwQhFvcuRhH1IOH8F8hA8WCqe8xPz+rCs=; b=Ql40CXoa6+vZqVkZTsUdCcPStYy1BHkOtAEmTJYJBgnL9Fuy2arnrYCjR2rbnyRH4p QgHCtCXTlXhhLQOq+jPwzbWs3X4togih9KXxRXgQokd55NHYgr1Ck+Fp27z4rVhdyDKS MvqsfrPfu1EH9YpcG5pDfMiDtdUe7aP1iQtokX4ZdkmBim4XtnP6iApK108QLu0RsANQ lbVjKnf9nzXq3OZ9mJgT3MAs6S+OXd/7/Tcmjuum7TjWzQJpXfZ+KyUyUSVVS3DoBCuv wVWzA+QB5tayI9NnyYAB1aEzuw2R/D4IU57GFUAUyvAH1wtQvJcwOWVwG6hJpSBZ1xuq pt9Q== X-Gm-Message-State: ABy/qLY7SDBW494ZzarMJOl2ftDUGytR+7WNz9VDJvVZJlmJGA+s5f5o dWn3T4g/uYDH8lGAxyEvNEWuzfPNdfUGUZn9xI0O6p0BtWAOsNQY/SsHTUC48+7DhlDQHb88Rj7 kCOmlR1L7+RXD8c2fFB0HePULCOMoIPNaGj2Q8r4ZhwH3FSgystf9m5gM4kPzPr9kDMbpEer/et racxqNvw== X-Google-Smtp-Source: APBJJlGfVoy4jyj4anyhBoMA28XEw2nlRqcNcJrdT/1tPfmBt1lA6jddyTn9hKA+gPO/5wfPrExIEg== X-Received: by 2002:a0d:e651:0:b0:577:6313:1643 with SMTP id p78-20020a0de651000000b0057763131643mr2234081ywe.9.1688169430903; Fri, 30 Jun 2023 16:57:10 -0700 (PDT) Received: from [192.168.4.41] (162-239-31-113.lightspeed.dybhfl.sbcglobal.net. [162.239.31.113]) by smtp.gmail.com with ESMTPSA id n4-20020a0de404000000b0056d4b5cde00sm3721904ywe.118.2023.06.30.16.57.10 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 30 Jun 2023 16:57:10 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------2IwJzRF7ULaQjBh7mLCOBcnJ" Message-ID: <89742024-d51a-c66b-90b9-67f837072cd2@joeconway.com> Date: Fri, 30 Jun 2023 19:57:09 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Content-Language: en-US From: Joe Conway To: PostgreSQL-development Subject: RFC: pg_stat_logmsg List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------2IwJzRF7ULaQjBh7mLCOBcnJ Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Greetings, Attached please find a tarball (rather than a patch) for a proposed new contrib extension, pg_stat_logmsg. The basic idea is to mirror how pg_stat_statements works, except the logged messages keyed by filename, lineno, and elevel are saved with a aggregate count. The format string is displayed (similar to a query jumble) for context, along with function name and sqlerrcode. I threw this together rather quickly over the past couple of days between meetings, so not claiming that it is committable (and lacks documentation and regression tests as well), but I would love to get feedback on: 1/ the general concept 2/ the pg_stat_statement-like implementation 3/ contrib vs core vs external project Some samples and data: `make installcheck` with the extension loaded: 8<------------------ # All 215 tests passed. real 2m24.854s user 0m0.086s sys 0m0.283s 8<------------------ `make installcheck` without the extension loaded: 8<------------------ # All 215 tests passed. real 2m26.765s user 0m0.076s sys 0m0.293s 8<------------------ Sample output after running make installcheck a couple times (plus a few manually generated ERRORs): 8<------------------ test=# select sum(count) from pg_stat_logmsg where elevel > 20; sum ------- 10554 (1 row) test=# \x Expanded display is on. test=# select * from pg_stat_logmsg where elevel > 20 order by count desc; -[ RECORD 1 ]------------------------------- filename | aclchk.c lineno | 2811 elevel | 21 funcname | aclcheck_error sqlerrcode | 42501 message | permission denied for schema %s count | 578 -[ RECORD 2 ]------------------------------- filename | scan.l lineno | 1241 elevel | 21 funcname | scanner_yyerror sqlerrcode | 42601 message | %s at or near "%s" count | 265 ... test=# select * from pg_stat_logmsg where elevel > 20 and sqlerrcode = 'XX000'; -[ RECORD 1 ]--------------------------------------- filename | tid.c lineno | 352 elevel | 21 funcname | currtid_for_view sqlerrcode | XX000 message | ctid isn't of type TID count | 2 -[ RECORD 2 ]--------------------------------------- filename | pg_locale.c lineno | 2493 elevel | 21 funcname | pg_ucol_open sqlerrcode | XX000 message | could not open collator for locale "%s": %s count | 2 ... 8<------------------ Part of the thinking is that people with fleets of postgres instances can use this to scan for various errors that they care about. Additionally it would be useful to look for "should not happen" errors. I will register this in the July CF and will appreciate feedback. Thanks! -- Joe Conway PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --------------2IwJzRF7ULaQjBh7mLCOBcnJ Content-Type: application/x-compressed-tar; name="pg_stat_logmsg-000.tgz" Content-Disposition: attachment; filename="pg_stat_logmsg-000.tgz" Content-Transfer-Encoding: base64 H4sIAAAAAAAAA+w8aXPbRpb5Cv6KjlKxQZkmKUWSd8wkU7REy9zVNSQVZyqZQoFgk8QIBBgc kpiJ//u+oxtogKDs7LiytbVhTSyy0f369buPxnhRmMb+tLNeOEnqpk4QLVbJovPF5/x04fPq +Bj/Hrw67pp/9eeLg6Ojo1cnxyfHhzDv4Pjo+NUX4vizYrHjk8GxYyG++KcXhQ/uZue8jz3/ P/rx6vnfXvipvwijWH6GPZDBJ0dHu/l/8or4f9J91T0+/gb4/+roqPuF6H6GvT/6+X/O/6/E uQxl7KZyJpJsOvNj6aVR7Muk0QFZ6DQ6sUyyIE3gW7paO95Senedxv822n9+PtNnh/7LxzXI gZx9Fkfwe+z/0RHp/+Gf9v+P+ezgfxilMmmnj+nn2INM/Mlu+394ovj/zcnJ8cEJ8v+bo5M/ 7f8f8SFGv240YplmcQhOwIuCbBUmjZd1n0ZnX9zJjdjvNLylG1tCiP25H8jQXcmGH6aWZQV+ KMMIJ0qQrMrULPSMqckvgYxjL5rRwMmRZYHoeWGKixFqaS0L5p+O5zN/duh/+Wfb+7f2eDL+ OzgEnT/U9v/4FcZ/hzD9+E/9/yM+nf1aRf+ffBpiH/4nqqIDY5Y1iV3vTsCQWMkkcRcyEa4X Rwn8EQ/LCHR95qbu1E2k8AJgiYzbCtwY2JP64UKgnRAeyOoUrNQ8jlb5TviPXIG5AWjhTKyi mT/3YVIaQUjrpwrQabTexP5imQrba4rD7uE3LXETJekiluO/XYjzIJq6gTiT9zKI1ghNnMdR tlarh2eDq8nw7fC0PxleX+GZhPhE3WEIn5PMncZXfgh0AoLsrfkISXu51yiGv1256bK9/N4Y STZJB/Eqj2ahn6QzHDNgup4HXOqs3dgNAhkg6K2Hj66Xlh94wEFMGeD8bpYu/VnlcbRaRWFn 6SbLeVh+hH7BXfvlwRUR9gEdQOWBn3jubOVXgKwXfDpzLIFUBoStM5/Vj/trr/5B8BBE3l39 s2S5kqsdj9ZVrFIvWney1A/8dFN+goNJx/WCuuFp5gcg9UndM9idvtQ9S33Qr9RdrUkcbs6d y+uz24uBc9k/H572GuhZLyJglB+FIpqLtYxXboiyjrRL2Ova927gz0AtZVhopZ+IZJmlYhY9 hE2SwJmcg6sXN+cXl87Z7eWN83Z4MbBuzseT/sShf24Go8v+FeiNczYcDU4n16O/i72qeuD3 PUQMtczETT6CFQhBJXmiSGGAEGw3tvafDH6c6P157wkgBLvSfsFKbeYgjKTYUly6C98TYbaa ylj4MyCEP9+gsUmX0iTJPAI6pbgtDsISUP0kFRmELd8cMgq4u/Nu0D8bjMR3ovuIBqZ7cnjM RDcMzcr9ZxSLexkneFDeuyVAzEO0in4IhPe9JXwhNoBlE6CEFExBUv4kCsju/n9ej5wfBqMx WCnAA4bUD+fq9lJ0xEG3Cxhp4vXH49vLwZkD/w37V87wajixLPug2+42LcDaD/3UBw64SZKt wKDCf74bigwNuMkDDeZicHU+eafAHHQPj+qBAIhfMgmxIQSOi3RpQrod988HztngdDTojwfO 2z5KjWV323/5C2E0k14sQR5nAuw0QKAY05lJIFHk1QHqX1xcn6IknoIcWscWApnHUgKHQaS/ JkFTpAUGR6Ent6HweZAwOV1Q6VBO9OHWgRuGOGAsvuz/iEJx1b8cwL+w/vD4pPTw9uq0/FBp wTswkaB2IHcYa6dLQIxXJSSXLKfpBnF3xTKfTLTQbnM4F5soE+5sBnNC+cCgIj52ksaZl7ZA FO9AzLNY0hPpgtiRtqA5k3YTRhHUrzKOaOM1QMMzTjeYHApxDYPxg5/IFoINF4l48EFUp8Ch u5aYSs/NwHIQRMQSbAiCQwZitSlLENa7/vid8+bi+s24Rc47XWZwSnehV8A09uT0G7Fn9U83 awlEUUehTZBs/yU3jX81LMoadGLyU5kR/+hZKr/AhwjLonSEE5eeRR+Ygb+1acgnyQDjA2MS RDQ0hFM+mGj0NDcnQDnwlRlICVsUL8pCMG0JsGSdAsmQdrRyoBm4dbxTtQTPxqkSZ0o9QuIr lASy/CyHctaRj9LLkMqI+SzKQD4sUltewRo8d7HUx5jrHXK0VTxExiYBe5OgEawEd7s4wWvH eNoCY0tp6RbOWv8eJAiimuRq3CfaoU1+ZfI5EOvIlHiYOzsiIplJpjBNKThioJMfb1ycC5yg yENIpT5XkBa/RmMMvAXvSJo2d/0AdQVGF248RQpCshxIT3ss1JGqs2ohtAepUFJuKJrP8RdI NekWyr16AkKJwy8PQL0mqKqsUaClEp64pEBgPpVzYLRBH/XyuUy9pd3cqSIkYcgSQ1DRMhQC TWqGtkIZxo14KS5vxxPxZiDeDkfwBbmipcXSstzT67XjNGSGTI6iCy4e+79KUDeTFL1CnXLq KSIhD3QkoIsClio15DTLtyexYtqQlcLlCiiQAQxOSwBGLw8MKDKEzAKe9KwaJPRDY35RtchX 0CwQ2MFohMHHgGaTDbJ0yeOnssFnIyQxvBI4hUQot0cJBp8ObAaBnnwsmLOOQSy9lN1Abkai MNgUwk4s3tJiwEUqcdklG2OaM6YpICEX7yEYu1OlF++uV8GgcDuJdGNv2eGsS4VvhtWxvCx2 OHBwlAUCODAYo2KVIgrgVQG2kBQMGByD16K0HlaznBK/ioiihogm/nPQ3OgBOQupYjBjKr42 dkWhIwNrosuDKGMcwFQEMnQeYl+pA6xSzgONBzD4Xgr1FDW8dv3Cc4irvNyYUmNvvI0XKCEg CBVDx5aQAS12mPJgVYiNwX0SHsw0KRwPQJ1iH1mSCByEFRjQuhCCgFEDwiSK4SosnUZRAH7b 8YlnzjKK7iAOnbtBwoDF2L0HUaRxUNSMddTDHAMIlYVB5M4McJRsgc0HYiQpQXNQdoGR8t7Z fghbXd1eXPTKy7HEk2br+uXmw+pyufLT/BjGytJ4voiyKz+8IwYrlYMdIuAiG+riWBWSi33i RmX3d5P+G37C0ZCxD7Hn/PZ0mzlqLQoUrVy5j7DwuAtxP8oC/vyqcHeEakrFGWSsjk6BsVE8 c0AeQenmqzSBYPBnVGnxL/xr3UcB7BLI7XMksJm9+3GThnoEZAzJMtqYvvdL5kO8+Sx5+T3p apOfw0+tEC9elJeMIA4Diaku+YC5UyDtbjOn0VttXCFzCNyYzFNOK8iO0CZjRQeC/LfXzg8H djnC4Wij2fuEqZ80CdRiHsFMzab7CDwVx9ymLNs43uztmqVE9mOzIF/HdN0GWaDqWUucuWm2 Em68qFul5dkexHEUn6Fr2icPVbsFpQgfnVk5O/txWzPlFEK2IRBEzD1FF7UaTTDvAwdJ4Efl qLmjg30pA6Sg0Tajmn0IYloMqBRqtBrsTsGzIV0Kv9Ki39rhV6YVTp9S9bjoZVSOXEpIK1iT aVQb1tNPIbxfizEhsl9FeF/rSLEPI6gngj110InYDHqazecydpCoO1ZwEFlDuSrBNF68mgGr E9TuQucPpSTDwnCSOhl++ilTmPTSVqxQuZxCkPI4xU3KzSoA1AmwgOmAfwumYP3sH+HXgGJ9 ivhbPHWfVUUFU5fRLAuQKOCh9EKKpnBuA8svWA5gnDGEglUWpuKQHMQzCATA1HLyK6IsrjgI +A7ch0RhCe4RZ055I5hx77sEhxc44ICIp4E/jV1MnCBVgGw/jADpOeZAUcZZJf5FfeY6RYp5 Bob1BAsDyJULjjfZJOAJAIT9HpKvKHwOackyjh6ERNEUS8zJdCbvp5iGrCgnn2cBlgcQFor6 AxcISvqeB7aJOo/O/JHCXF6ERQRixZT1E9yfgyVKgKQBY5UlqY7fcOEqkcE9lm0WcI4kJThT SZ0CrFpjKQF1ZBk9YKmo3cQJGGnNhf0lgMEitrOLpBi9wBysqyew0OLuKAiC5ukZ+0kbSBRL dppNiBJBq1dlt9xW2/KCU5oxDNMf1HN7r1IOBf+8l9uevbFUwT4M+ysw3UVImfdRyHtLzHeq rZcCEMYN+Y9nOi7IRzA6yH8cGN+HVxMHEhfREYf52M35qXNzPZ5c9seTwSgf7tZvtvUD1cm6 dOM7INNNDFR5HIEqxxATVmmx1zQIPgQWo3CjQOdE3R0Ebg/2ICOom7ntfHHX3fHh9mAOuTJz 22HnkKvxY+k3wKs+L/lnporoxzGWjFG3QEzRnago0winISG9HhGpRnLhY1sN7dypNnp1lrAl FJc+aLNXIg4x4LXQv7AiiOpZ5JiAC1g3j8zSe/kcWKYLOmAFqXyRplhoTLmmWF0lVC2sEumo koZhxhu7oiaqOIGS7xAOVOcdj2wSuBGP9LHWOcY547XrSbsUjTRhpp54BZ5nxtnyBDjiLbeU eq8lDrYJqo6mCGoQyaBQyUdQKQmNGnsgtOZwkJfyEZO6cFHK77A9qnsloh8kuefhWpNL1pEz zJfUFOFile49JEJfAEMsaAcEZJPlBuLK1TrdNDnaZvukDTi4Z7Rrsyf5VYpfkV8YGVjWHMKY GRAWa8KnkwvLwqAQflNjR181ybOgYjhYlR9wT8SylhL8Z9yj7Bp/g/EsfqwX9+Yzv6eTcCN0 6akqDm7Cw0UOVpUxU/krMmY+spVRUwVBratUI/OxG466DNN1XZjcapSkKxe1N8/0i8PWpIfa Zp6qYCOu1zkzNW0ZPQ2utCMXlZll4dZpWqEYQ4h28ElLXLx3Bj+eXtyOhz8M6IAKx3zamOpM 24qhQ0ghkN7R3K5kjE1jxjOSj6am/Zf8s2GB/CBB3/oxGCSsCVMEky2Wot1u0wEInZffY0EI kHpmn8tP0dpmk5f0cgDVUhYAq+mgFfMrlStjutEp6xl5LZLKfqYWc16bA1O1p+9EtxjLC07l YZ0SlEepItTWvbKaR0Z9HR4DkU657JXX4FF4rQ9If1DMNiRYyDT0iQXvVPrV7KlJFK1vT6Pk rVkR31xaEEiVHSSWe0ZalkcxYiueAVnBzY3f1GYaXAwuxW9Gy4lkiYVAVxS2pbsUhcwhRH/O PYCKZmIo6KIyhTM3iCA2RGcqwxnIYLMlkKRg6122/QQLrCp7U1TLWbZaV2vnOOwnd20zcB0m tyHYtJt8XzQ1UagMDYK0ayoALWFT5t8UXfM0Z4gmgE0i0JkIm3lCBcbgjsB2zDbCi1brQKIf wJRFdTv9X6mMYiKmdXE7UuZOyoNOLqa8DzVsULkSSjGKbmFKGUcCyUsww5whjBgzgqWwgygh zrjdqrIIP+HrQT72fsDSof8h5MjU3oaQE95ttWaQe4k/DbAPPU9FBP6AHacXozzi0TJaaZfv GGgL3tcuG9urJnBIqNZFaTf3Tnr+W0zGyyBb2Kh/M7zqj/7uvCfdAZrqhWzXkbiLCGSCNN6h 9Mwgcz/FXamnRO49CmZbAQHKFwkaRwbMvZ3I5Xc6TORGGrkKamiDcRjQAo59+Z0YXF0PriaI NGON4qSRJnN9peIK5OIaL0MkqepQ6FgEghZWthnKKdnxt7FkDJk2ZB21xJFhMpw3HOqwe/Qf PT2IhUmuFzTFmssz5SqFOhhiaj/j2KGlbRaHFKDIBy3CrolnPBC//QYIqBUUUPyeBRCO5NNr Z+csN4nHWDJ6OGvr8gltQcjkj6sXQ3LAWHMqAGNXwPbJMwhffIvJJnx58ULxN7fbFopazxwR qg5HvqymvddQ4qFOjutb2+6g5vh150fpGei+nM/5MfXAqJODpsbDppCb+DCWuGCzNi/ptRWW IbKjeC+mfzE8c94MnMHV6fXZ8OrcRrTaugDYLLYvUwm3h5S1qHIJN6GqlupY0wYEyvD8339X KonBLKRoRVwv3UdTJEGrD1uiCukF5RL5WlgWy5I4tyrFN4sUwyC/nnZQC9zgQN3WT/BkzEab ClguliX8ADkUZkGAOGFzLn2eGJdOiFqMzU+Vvf4B53r+c/d5Dpvy22qDnQCUe+qcK+toqacP TkbzoydXVuWjZy+Z4Ep89qJ2rT4HHR6PUbm2I+wZ3mqMsREZzPIrEYB7GkWwKtw0+bQ8+zth lr1Jn9pU764UbCuY5AFRSdLVNLPETQNGhZuR96L1Rkc+pRstBWYQI+u2tKJDfkOADTQpD/in XT3JUsiXRxfawuaxasl6GG3PTzSha7wCpsQBVST3K9qrbDua3NOOIG26ZybW+S10Wz7KeRil KqmC537I9UmICbN10gGVDXSvnELG6QaOJFOvLUSf4gkCpS9/oLyBcAm8IwBipqrBHNuRHzci Ldo7unM3JDzL6gVJNJgGVqCoeL2T8WqpGipHYnRpRR3VVRETo0ulLKwGu9hJ90O8yyiDja4H V6MHkhiAAAt8dVshydYQfHF1Ac7nxhg+lkvCVBOMKaLjWA+LExIv/1U2eBoowdKADaDIHQUY aH4h3Xt97ZMOytUSnAbWP1xQyZWL3cgd2EyV3GbFDdklg4AQf53FfpQlqovKd1nxOha17SFy T1oKK1VreUDqcKgTY3aGYXfoSXodx51SGR8OrgM2MybNiUACmsfehbC/bliwdB3FqX1xfU76 bystd0DhqDHk8I1um3NtLPyD7tl7HllzohMqLJHl572vk5/3XouvVzoTq6BBhTFSOLwt1WsU rvMJTOzBaAQuGC9aslO+6Y/6l4PJYIRO+nZQQYzeS+amBt/0oVs0IGUGip+InmHIPwulCN6T pCqyCMQFsXjNNk4ZI3QnFeOkw+2mGQBrQ1UkCqXHRXzcoaxVpTp0UxO7O+6DuyFpn0aLjA0X aDS98E2FRe7+PC1uRRYJeR1PqxoblFuyFCqhcwPYNympvKog1us854kVr6AqjKwO1aKqsoqq qnqG2Y7hY6gNpuuijaezU5fqXYhEQDWu3RkqAiqlz7UJKuao1Jh6ujT6VNMeS6WlYqhZoFwF lRKlvj4VlKPMrqqwOuPB3+iu/O2YohEnkb+UaqWOikJUlaYS6JNkMe/p9pWqYcyymK0gJdHt 3IXjUar1ATF25zIFa0fBORbrmKoIcyHZ6qFgYUGCqENvIVAlpW308rDU+Ntv4su8lFTe5+MJ rthrp6v1Xm0SXpuCl1IxFVs+qyZiH0kFq8C2YVWztt8L0GAhnJ9YDFR1jGG7IFkFAWPSJ+ao OU0MOdy6gvCsJIx602LFLjorU/MelQmMBNWgyF9ziYwa59wCM9IDULkVVWtTDE7cOVbpQEt9 riVxII2uA2Mu7IzH66WLLrcEwo2Vxk/BKD5y3KQ9sdYabvs/0z9bokRWNnG2rSP3fBVfnCzW NYmiZkGFb7lS4VhF18Y1SJiQ6/4vSWrQmy9wlFfojMDMAqiqronfElXeqNyJYRecsfC1Nz/M pLobOTS8hr7JjfaTPQtTkSpxpoARch8vAXAxw1KLEBOasJ2qGikaJdZ4+1Kbdn7xpKA7yMFK PJDl4rduBFetKIuxStMM5vTy7C/P+z7kKQ35md+X0ihF+3dymqJwgwGDZh9iuuULeNNy9KCk rNw7Kx/xg5n20PVkmk1udB24nq7SCTeNVr5HsSvmNvCEb5uAi4zCPHTlhh/6CPTgTkwgdxvj choBUZmuvJYKukb/sldkXqogw8qXRwVP13Rzn/FHBoTVg3OMusXRJ4PA2hhNw+vtPnIePOFr LBwxsRVV/58vmEIyIetDlt03BnUT/svyTWBt2KrXg9M4k7qSoq7G6fuENbPVZWLuROkubOnK RN6ALY3mMD8Ub4HoaxOGxrrme8q7grX66491r1bURk+Vdw+43XamUkld3KR2G9oEvMWuL7mx 7W9YfQgzQTT5FQLtN2riKt0D/aRYCddypwpfAUFiVO/5500VvAohU7vJPRdqDasM3iSAn+RX 0fTbY/p1BUtBeEaFq26rrouoD0RlM11tocB4jX4mmqu3OpL8iESPl99rahk2ThMPG5FpDF+2 5qKwAVLeemMDTu3iWmFlIiu7ECWo31be9xN/LbqPpYmvqxN1UxX35MuL6O95S/VSGj/k24zF Q/UyGpPoAgQ8W+e1RWEWF8kfq64/vddc09YvWuTUzh+/648GZ0R/HbgUbhpbKMoxUgiTS1NL MDcpv3g7vDprleRSXUjA+pYKAP67vWttauPKtvlq/YoeJ2MkLGHAr6qQZApjmTDBxgM4ya2M S9VIDfRYUmvUkgmTm/9+99qPc04/hMDjcSY3qGomRurHee6zH2uvnTJwETiWPNFEBl6o/LNO Xm1A4U41ByhyX7o8CviXGVoizhr/9yDrnfXNr7k9mSRki1bCeJl54Wj0xMPkh5CMk6H6+9UR 9HUR2qt43nsl/ete4I2N7gXYXW4K/R+DC6F7AF9I+0kM0oTlMJpUSgWpTZPO5TkenhM2nPM/ 4VhEDyzNjA7vadbJJrN0pNFdeUQMkYeEzHfmHhOARQY8fTpQ4Iq86JxOe1zFanKOfBdea/wg jBOPOQ1TGQHs/Muv0MXi3XgTb35JYi17zTuwuEfZTGMJxVC+X9G8s69c7kX0ipuJ7brMm1F8 KUGOrM95QaZlXCScwgi90oaCHRt3+IDFrgMUGGOI8/gdjBLJLmTvKA/keYylmLcrkY4LfY6u tfgEfll2D3NLTpAdWGpqMhDljDUQOGuBk5XZkDn3Lox0fMo4OMa/M3JGko4z9rLNivMrTyhN kyJ3IaM5Vx551DQ1NFMjvwB4Z2sP6BAqYVXoDHPbAaLzw7eVEznq/LpI2N0n+0fGQ5FQPk0z OkNfSICWWxqEAUmTtacefBeguevX5uJwTV2kpiZI4+MzKu+DCI1d4yLadkSVYzZ7psG1bW7q lrRMcGlOvYTDcPDulcEobN3QRtglvV7kzSQd8zPkwfMJtc4EiAsQNfMEf42Ya4X93A3bKrh2 Oh9KUj4faXBBa4qtqsHcNJwPhWwjywqppCG5g8v5r6oJSEmIukp8LGtNsq0R29sI4VouDSm8 kcYDK+XLMrKoII6cBnrIaCuXjxXooqJ5svOvUZeU1AyzjbYPd49Y+wyzIxh7Dc1KUD90/WH3 +M3hq973B3vPm9aK6JXDlNMUTEhTi6dnc0kOayobWInxQyg2yCp6ebTb2znYP6JV8bRR29b6 Vi5KDHJ5QGaMeeCStXaHaWQE7sPaOslAJdNghbBKCtRsVVX4m+UlocmH3B7SjvmHaJXeiH/Q Miv+QitM7up8I1aUglgP0gE27Bzuq4Ho+2/o33sD3kSSLHyVG7fWj6s/FaCBogLdKWEAr/D4 elxHVDFQgpRWv82P5iRK0JEc2NJpNjSXD8dEp+l72nNnic0GB6NoQHsSIyUF+wRMBqxdTBPJ HjFvvghealsPj8lJOvbw+KaMWjs6PNjv9ngdbz/vbe/vc2+OGKphtjpD3kU+1sSXjt68eLG3 swdOmteHe9+TFr6r4SVvvXOiCZ2K0lL04s8591Ltdps6QEhfkPpBU1jfrrZYqq2Ws2MCzZzf wggoB7ZbYqZdp4cHz/7a3TnuvTo4ps5SF7uH3b+92TvaO+5ykyp9LXmnrOs+82hh1tFd7RVg ki9pq4lTNhkcHb7Qbdx2aMNohz38LrvpPPH48vFC6ePtVtlrdACSjZzk/c4343hGS4nhTRVZ xENF/dFxiu6mdI5OQWt7xbsKuSY/JCukK6fvEoemq2N2iJrOO2JIeJgypvrF40t3nCFu7sW/ 1wMvMkCWGQB+wakSlvw1UKIW1tlkq7D7OhxBjUrNZ+L08jqlanCZgU0YVn6hzxkkdDbPWHeN c0ncGMwFjABFNpu+47wNZ27ItMNOow6dZAPpFMuE3LQoGY0kZVMFCPYZaVtFta3FvAux6R78 EK9/tGjNzS4Si5RNMgS/YkEETHlsqM+kgwEDUTBjSb3RqHz4NgbSMz5lyHgVy+QS98QFhi6T mMGI+eBicI8MhxKCfJcqEJfW5xz6w3vN+APpDo3GZYgsPTY4D5/+6gtl9NnPMRtwPj27Vlv5 gNTpWsUlLygudhrkIQwqhIrnAXKcfb7+rAiSrms1nbyo6SiSU2YslcwUIVXg7XChIBTI+WlS pkGw7R00jQ4r7N8bxZC8+glNyi+PtiJhp7aIa3dxyvYBBB8TEPGD0BjOnHgvIaOSbp9qWp8I C44VR0MSJaHnJVheJ0loD4pAoMdjswwzYEs0IzMGwIf1Y6AYU0RPo28le7EtG4OdECcCm2bb Q4lnzPyQB4XtNFKlRBroe6OX8S/YGio8BKiTG5TnJFEJR005cov7PJv4jBVAjejX18mUjNec seQDMpBFnomTQESGlykTMDpy28utIXGbjtKZdzTQLhxXZSqGSX0LN/Jk6Tr5FutR0Eh5fJpI ipPsV907GDS3KcyB6Z0gkrOKbUA9B4RAxi0e4kKSvWUwgKwDCTYJkD1EDP4Dh66T75BNEaOl 2poQIA5O+velZH/xZpF1Og4lME0NDqDLhJfcNDmFM6IvMK/CItagjZwHEgfD7gycTTkTpCUj bB56pl/tZE6WNyTb1jmv939Iii7WUzbe0jWgijyUWSjsEnxl8rZgL4a5BOVwsCGagyGjk1// Ffy2wJPA/t9yOOWGUWpIuv90tJcNHTofmBPlpxrF5q13XwJTu/gaUd1TS/FxZE0zQW17xAit LT5P1BMvrw598fJNyzzjuIhfHV7DX4guaI1P798HgHfniNcuieVjmi3un0WlQ/86P7145x6g BhIRKd4j/vCb3OEoANSPoT85Xqb1t+zUuHbLAw8L9MwcjjmdD71ZglnXGo35eBL33/Xyf4p1 lNhLvKdHB3Z03QC/dx6V8ALuFxfwL39RivvjlS6e7tYMSRS+At4pBlv3SCj3ZllPsFt8lwcY 0B2LGxL86kD3W9edi740VKe0j71kDTYEnVzEYXqbKMMG/BWCSgVTzAh11QMgy8Txr8emx5nX TbJi6w0b7VxbIFvACRWwJ+G7d0kycf4tOd/OyaKT53PbPtiXtcSZhb0PN6T3aW2FN9U6sqRv lW325JFtsxdxPmvSg9U9JjMyI2tCsLE9srDk7tCAO2SnSDsq2XTtyKSPyBMVule40KpB8hu4 s6rIDGbmucLNxXw+7Ova9L47XkBB+DjwPykHw2InHt63yDtWR+XVuHOMocVgYZDJkKOdePWp 4dqMqftl/detxlXnR/Xq36E7ghbAs3kKqGnEKxEGb3+aTkB0iUlHGqP45SKm8zKlA8g44Fd6 8iNzfTk/hjhS7+mo88F9/D+vu5g5GrCXrw/Qo4rfQeULv8Z6QtYxuFLoK/M43DAd4tOYkOKq Y2vQFt9yU1DX4HpFTjQLmce4XC/dwKUBw2fphiAfueTAfr59/OZl89sknvCecPed0zcA54x6 PPlNnbGycGmFHvgujfcIw1NKiwfrg1k/IQgEPtdGlZsKG1fcscIcIMgNZHVt/7i9v7f7qrkg w91AHnRpPBjwIcyXtkV3TLR58oNPeq5A51qh21za4ProUlVrQ1VMEsHY5KksVNhbEXsxCgGh gherAKA2rxKGqxoCbntYFh7K0HIhBqVTEWYpk0soi2Pm3KHsHLUAdZoXCYUNp8RrkXn/8Qwk //J6zqXFYlWdaiaanetxRAPaP9+CGQR7FeYkFAQxvfEcdrKN4oH6KgVE4YK8carEGAApl6Pd JZI/PaobV9KU8VFcz1RWQ7lVoSkrEZSZvkaag1NW7Vgpw5AKxBssjl5yeh4vfuffZMmjls0S HDEyHW2RtiwA6vjQTOa9wDTQCnCkJCFQhRYTg4nYMcBxHrz+RigUD0LpvgJJ0TLuiFcBIsVy 3NlFIMBVR9dRytBnvc1gTKX8t9BEMgtMDKkHq5E9K55Mptlkmgptj1CJC7OEJ/YsJ9atGfWE JyffsjZ2gtZ7tyQTe7O6CTCYR8Qit56WvhBxp/q2IhWFvtufDPQaPAQOEnEd0EY+096EvrVR MosZmsYPVbBaMSF2XUyoGivGWzoe7lOxIwLLXdDQJVuCo+5K7et/9fsEx5un8nXmod8yqpI7 AJ7+UMKQFSPuhh8rGYvtyF2nGk8UFZ73VYkQ3qPH7pSu/LJ8pdk4v3rpr7vbif9/5rAywOUA BkyVvvjOUcOlY+bVx9+yvJixLhRmdJkKsf5o0pTiA8KRNzynxR5+MT3PWeAYA/DQsaU0V8Pt K/fQLqYntMoLfMvfP112/7T2fk2O0pu/ivQxHvEYdRDNZ8kfXvlNzZX37Ur/1XowwM8da3mE A2nWYdZ65yvWAjQ3PGGr0NMackmM83Viu9Hq6pXpPMZg/D7tk6TI3RepizLPEH/5eSabza5G /h0jzsLwMBabpQKcXOqCYonhh6m2PoMiPEZrmu0hBy7yIvO+1lcQnYGdmCQ8h5LENiDN4NLo 7NUlym/l55juhxYwEkVlY7kORTGT1lBZNRdyfGk4ymgewwyT7CTPwJUCsT/uO683tt1cIFgn ySm0FlaEWDPRpG8XGqhZO+ywziYgXBxetg2YlQjeigzfftBIzhWfQ7NJ/UWgbERgbybhgZF6 sS/gh2fvtCoypBWhcUZ1LXYQcmPTd4kVeWDspgTvylRImlScO41JKP0xeZLDCrb7eOKiZz4z SdkLlikWqxWVl7a+nOjq6fQrVL8I1qd885/34mrDzV/iWDHqD/HVr+srnuhJq2FinltderKa OPLTtoTNAekQE2ikXN3GQ7aqR+Y3Gl/jgy0Yrvs1CUZCW1Dc5ffvF/NeeKuXDxAhO3UbH83h A6jpYlJp1XyhuWxH7nzxtjFnUGMQmqwr/cy2UKtSiYb7m5Lo5u4tZOtyswNGy7c1R07xnbWl aiRkGayswkurlF/BMD+IChLTDpQbkYVpyPUCmwknSKhCnk5jV4wCqBoWJui5bTY030S8Eo5s kJqa0uaqF8hcMKi1VbwrHTftT7q3VUsdY+eI8sfcWaCo33Mz8pbd9aq1H3ZfHnzfDZCc5tHl i2117GHNjQRBmwTgjmJZkbimqsgn8qKUOdcW4geLrhSnVuym4Fs0cIOGAmnxcX4TYovxFBw3 cGp0BDKOHtJGigv2vreuNRK4sLQWn5G541rRF86EfsAVFsrnnPVEJ1Jbneg5+8Pb/vbcDgt5 MSgpXDkPC1g2LIJZpLtGOuYwzzg3wIX0BF8sfrjV4NtI66ggKBuFFReqINdczs4icjsHE4Cr NXgwtiIvvmMM4bILtmdyRkdxAVJfUNucr4/xsyeioYh3hQOvUsQFYfCpwL9jpnvQY7faboTe 8a4OHt6xULg8MJfMd0YM4DQHwsYGhzEZwjqdncxiHfgrR4gZRvPMqT6XHO6fJpKg7cC7qrzI U6vuHi0bNUiYqdmiynFt0RybhyZWjtCNDARaIBkgBR0YzorGB/KnLyNP9+47uskpuKcDMyMU X61ZYb2UceGrBXFdzCoKrixAy0CezSQhipDmhSCk1hLSfuDgMA+sdW2bFAUeDGcpXNsBwCC+ VI4RBWa4mjJ+aTnk0ieSfjSOZQxSHrIkrVZVjRCXJKoGu+bDrIDVfwOrtFp2MvBUl4gsPJs5 C0Qox3DZO/hMPBa+lgoMgrYKP6ZJ99LanEk6LFxU48EwMT8mHXuSrcEFnYSphikL2R1LE/Zw s3OSykRPaA7gzM5DdITh/JqrRb2OznL28n47P0t4E3TQPUvylQznr6Pui2d7u1suQZqUG7ht uSyqwxICt6PZ0KdAKrOVXJcXzGqI5lOcJ0bDYiSz7pAYXnamSvHN0J8Qxy8UhHjLwSQZg4k1 T2l91FIkHvQOn/9wGP0v/QPK8jH9yxE2uBTZASkf6/VEDZOz3kSyrk8HLqfCb9N2UTxg8KDb B1/WUjYUn3r37+t3OV0bq/9+4eYFuds7wyxPih0/NZERgSedQ1YyysbG+Wl1GLclO51rbTOL ewkM4rcj13Erwqye/7dDrQnRQVKJoh0XK3pSEIIODsiMlYFyBpqec6jKD8Ovmg4AB+ogweHJ +m1BR5uPDd6AsA1tLJQFNADoTNGfGchjc3pH2sfYa5At0LtUXIiTQaFZHBVjX0ueRa5AvaiM AWTFnsLyFQrLSWIlIKzl4CKoamoq8ZSeDDBsZVi3YBinNucT0ozAncRe0/fJ1JWIVf+QhpMZ TTguJoxLGKZRPitqSrG4qpXKNV5QQe5omTY8lf/POeXGGHM2wK4vQw9e7f/PlbLzF/Mf1JC5 lrfx0o18Y0ax2r3svK6aE6MHEBC//JiSeX6KQWKBfA//8qdgqfHL2l7TdJ6DRU2vbfkisbOg Ty5WK8tji5bzhbDQxFwUsTfzuOKLdGBKiYQp3AigmWv5TJKFvqqqB5hMekFIiiuyoHBnyzsp 5OKQTYS/KTq/Fo2vB4S8Oe4dvOi9JPueFl5pkLFTubIJZMPd4NcBZxQ07+64WXAGrmY7aNBe hVA4P2shyfxHmB/WzA6+I5Wc7MRJaM8icSIdD7KLXCCxCimbBe0aiWWtmqJVV5FKlVp+WIxo RRCbAqgzjp5LXgrWgiRcCJdgri+II0HWMhpdBX20sfuM1M0zSapRVZIFh7pJ1dspX30VFRZA yEQEk4tvggcI5Z3pxcF/2oU7Sf/kBxYTqiUbV9zNgn2TZlOXRdqY1xqXCIUpS9g4J8mdal47 EovjE0Or15iVJC3H4uxxeia75JnoLR3IU/gnlhMtY7GRiCbYP2JRAGIYiSgjh4PCXSDLwj9F LE+dDn0TIx44RKDIeuQgzSezaDDns9LbZfIczahhnu4aH0DDcqhNkV8364ipUSHpsB3vy5jT qPFUCZOt/NO8vk6wC1SyKs+XC/SbS/R6wXjHiA7lr8X7sLQRGdEpq/W+9W/L08HUPwdDsd66 Skjd4BDo4xXV7tbJFzI7i3mbemRbn/isd5rbvrntQoUtkDFROsLKgOsIFKNMtxQPggrAXsdo mV70QxK5UvJ4zhl7FcUIfiAHpwidEKlPA8kEXoUy36YeqcbDHiYFu5Z8kOY6DKqYeA1zgXp0 o7pzS2rOSfm1CJOvS5MJAP7izscq41xxjQFHyARmhXHy9wfGNylNkoZQdC/cj4oGeon/u/K6 bXjvTudTlvxCWy4MPoU67dCmV/Iyv3apWz8tbslb7AMwa9e2ASQyOcgN8Dy/QDFS98uQDB/8 zmr4STrGT3KlGfKXYmhcPZkSHL+Gq7XqHaytLuh9e+aK8sBLfba6pcxn+lsn610j7S5wWbEf MOEkTZYROENZTCU/8/ePNzZVx0Cpc6OCNeyfBb05KwpiwDzFUsoCeXHik6Jl2KfNnOTqQydN 4xS+svP4X0xcnp663CauOkvPekAWUzmuBV2W9RMSLS+yad+QSuzUVFJsTQ+nxghoJc19FUGu BkFtnHNZeXociZgR3G2M78u4fhLtiNmU0SOh66wpt7Rstr+K3DcYotUCcK1oWi8ZcRQ4R9YT a+IS7n68/mek6sUzSRE7F6c9SkEqfbeRr1h/eKNYtfn5eJ5L/qqockVOyj77PJmLBaY2AD3U ChILcjEbxZzFe5Y5phMZDtavodWo596inPygIsYhqFppkYoaVUsLi4Ds1dozzxMMhvc3Lxn7 +vBnsJBWo826GSn4mXzMrCR/6mk9y1XlCz4E4Yb0XoTsFInHOkWzywk8u+wuKCh7QQalnpPI qbNHGTSDRDo1Ws7bkyQn+w3IFHrOKKXJk+UuI6vefSYXRphE05dr6E8hKx3FYcb1KMzPyrBF rJQ1gSkJTBchgrYv5zmZzgccRWVSx7HD5iYDzDVnp3NnwsDdSUJNTZB2Lso56+O8/NqC4rTC PUACnmdM3hJ0zgYrc91zWg52cJKwT+l0TjMczE1yY5RyELiT1iPhPk/POERue+IiMfrq2gxh h4/pD7FTsHmHEPJNl+9ZV4IvZngy9hlHZDXhlwUEibN3skR020B/i60ePTvPQbWp/ElaIC6T aus0TJyfks44Fb2MEKs7+ioM0Vu11NBbV1TUuxbCzGPJioetgcUc/qzI56ubjAWJh3a3w6pU Oe0DZt5iK5hPH5XAiRL8Y8XVSCc7yjINniIiyyd8OhKMBK0X0lRZ4kliak7NiTXsKqwVMMqd 4T5zec+OYMAi8QVx96cKyVltcax9S0vHUvY8plLR19LRmgW/SJu3JyregmSr1dZEYKfhh2KO E8gVOuYaPqWViReYG4nxYSckJSwRPYPixSQTnHgs1cxoMGnlHhy89BHyk/lMGV9knaa584nK uaQnI2etn2UqsLCVTtKzM3i2zrMJkwUwNYRsdpqrcQevcV5Vfha2zKUoBL62z5Dd3Jn31ZMU A4IatJDJ9H3ad6f/R+SkpjmV2gFhTBe6kA+EFU4ac8J4utw4l908mKvug865+hJjpK11stMO JHtHgPg65EAC8HnjrcE8OpvHZOrOoI2wu51HWJhHOGSp1AFFAn7wfETsKIld/VY8UKpB51uR CrYLY+qYczkx8M2x5cuB5cllh+bKR2X0Zhvzj1f37GO5bq8MINW7KIpTzqp3gWzJhNqngheW SS+XMoNjId4kb5jdpHXJugWu8NpvK/nDZ+HmYecTKFP00EUWAYCL5SzbBfkA7O+qTQKQ8DQe bTkktEox3SfGNccmjYAoZWdWsZT6ckdt3girZkl4l24U8vHFRaOq9aJ++Xgxk6tX7wIP23I2 c7+4pccLxt/bph7BUQVw2HZg8EZgpx6rQ1bqjiAaN84uOjBy4CqCjJMjT7Ar7DyXFAWoAIOB OoDbBqmGhzaduROIPSKkb5oLAg8oFKc0fzATZo8zq47S1l59XN+gvewmgqZRpGfX9v22oq+s A9bKQuS7Pu8+e7NLG+Eu5wmf9XH+wpSEWBTf+zkNyTsJ57Ka9+d/zTFP9B9uQoEOxU2K89K4 xKuFrppSgdzQyyPFMRFALkP/C7Kgrc4FdbLFsypLrSw+tufkJIR+5EnN4oDv1MOE7XhYghHW pj+IvJL8geDgck58IWSl6L06Tbl/2We9sykJnVzo2ykB3MNGDe1rKZyuREpgyknMrOcMNLEo 0zxMjaiQ5DCGTWh4PPdOgVmYNUmX17bm5rbtidFIvRq8j01J0iw6xiuuKo/YNLFyaqZGiVzh PKB65h4NcFha3aXF2uBp0tifEZJKzS8sHJqq09FM6Y2d5q/750te22xQgnSWlN1sPu0nnhPr yppOCyfZq4c4yZjzQMFWBW8HG6dg55qjzBhsVPiYSSWMlQWtwncFpVULnFnVLbEwPlEplKu0 goVKQegoTcjMyy7rDXw2KwIq37bUt0dyZLFwxaI6Ch+zxu/HkPa0CKU7NxH4Km/qKx9+iBhe L9xalmDMTzjrnzugeC6ec/ecG+RD8BQ/sxLauzu670tCTEJA3uFteeWa42yEiQEYe8pVdnkP OSb4EpwooPPib2j4ye4UjxDYt4yeTSlq7VEIq+FXfYO4hOcnubBwSzIZEJPwOkmNGlJhXce0 Kpp7KfwabQ8QPs1YlMTCbjZNskkSvvgHJdtTWBVHJeTMu0AQjUaRS3KLkIbXbj7N+WjYDio9 nFw6IhvAlzM6StpuvJi6Ud/CIXNxLEyZ8jSeDtNkqpRlJqXgzh6GcP+IM7QhoLj7A8Gcl0db s/1Zwdd1SSeNP6RGyPMFhCth5sHh5dVyOgDQcdzFST8mEAUQbKBeDCTSjhLuIGfR1RR1SwIm ZolW+oISHNBkKiv5t5JUXTuZ07vaSi47yKJsfFau3+a/05KeIjorpUoavz/Cl2vT+t+0HlrD 1dzhwkd6HkX37unMsdGAP7Ush9oQvzSMd52jUPCP+bXCJJjvSQ5JBquWEyTJBN68eKb18q5d GaXQwmrCelpX9CRgXcPFtfVOCoVOblDp5FqlTkI+Lutp8fUIT7dLt0pzCyVSXG2UUnEUVxVF Dh9XrRclbdJTEc1hzeIPKG1Syk8L0i1bd8QXIeLLiMNs36ld7HPOK8uLdl24vOjP2uWl3Voo n0RF8ytPF9b11LQP1NM8vqj5J9cvdKBK+QeFxy1E2kMiTP6kPS/eY/NtEx5cr0NTvN4Wgq0E KeTObbsyC/HyigTEO9VZlHX8q5vO8tRg91sS9ycb/H+jf+Xu/RoCUgvJlJqm5bEwoWClFvkn BdW3+TztQTAXSmlDM7wW95UEWuNiUyQ0IM35qMlNd+4ErFRRwEMlxP07oh+6a7SEzQ2zQdV8 cd8XXxP8dRNECCt3knjJNowOn9Q4mShJLyvGQiDMtVpxOYI8EmREMEOiSkGezkUMYzjPOZT8 3+rg/wCrJyztYguezu5T78UTdtvQ5ejZrOjXGS1di4Atdziu/zf4GmtMPK1YUrXg2GXPiRVQ zNkPUAQn1mFClGdvMp+iIHt+hWMkFAzXrJiiJuHPcV8Y+1C7njG67E2ZT4CGAMSlMwMEVPEG ybhGQ697UvNH+qvLaBfGvLSV08bKLy8qRvhr47Pf5QcW2DQ9eVAUtw/yfw4ffLR3rNPn6ePH +O/G08fr4X/t89nGo0ePnj55/OTRE/p+48nm40efRY8/Wguu+JDFQbZZ9Nk/aCQu4suF1y37 /Xf6WTD/YIGDbPgo78AEP3n0aNH8bzzafMjz/2T96aPNR7RONp5urD/9LFr/KG9f8vmDz//n 0ZIV0Gi8PHj+Zr/bO0nPhPA5uKpB9v4Rffv3xp0vmj/svXq4edg9auHPEg1u1mjQIdR9hTrm 1ac83z7ernzb6Wysra+RIGq83sXh9bx7tEMXlV0GnRL/7tDXbs3vNhr7z1/sb+8e9Y72EbH8 Agcy3JWd4ahNf+3vPUP1oMZhd5caftQ7eH2M7nQ6M9KeOjQyp9TpL5qzbNLLp/1BOm09WDBc pf7iVnsqlLkEZ2Pj8+h5msP0HzgyS1Kw8P8JTFLzxd1d5PP4uvgWOuU/R4QETlRFJTIuaDgU wgYp0TTIpC4NwiPNZO1sjXSYdDg4jacjOjKRIpG31hqvDlAd6Xh7f3/n2+7Od9TmjUYjPR0k p9GbI9Q2+vGI5qG3c/Dqxd6uzJUMTwM/RV9ibPPzhPTzL5ruuhaN5OTs57zVUHYo/vHHo1aD LaZ8fkJDSg+rH9MGhp3bKletrT1YWwueFP7cekDz49bsmpgUpWvLM6j/7cjFa6N3DdIS0tPf 6UH+gZ/rL+cPf8cS+b++Toe9yv/H6xsk/zc3Hm5u3sr/T/FZJGpov60UF8HKH2tj/EE+197/ s2k2/MB3LNv/mw+fuP2/sYn9v7n+ZON2/3+Kz+dlRxsb/whVNqw0K0kCMqUZKb1I0VppkKIQ gzff4px0E6lvK41RNpgPkx6CG+L4jVa+ICFDB/GDsniBCOrHAjuQAhu3Euc//rnW/neq+Ie9 Y8n+33y48cjs/8f0P5z/j5/c2n+f5MOla26yBJi9Fd42zY+Hl1gqbDADCsOYOB4/oYuLeS8I 5zJzUzdyxmDj70n/PIvekBF0t/xbSTTdDcpxppYo8XcwWHGDDpMzYC6mjvssX2voE63ESrnk iwTnWw2pKnEkXsHto2hFTd7X28ffIv640tjffrX7Znu3G+1Er7cPyUrq7kdH2y+6W40l72g2 IvocvDl28S52m7bd1xreSsfBdxrCKnxnJOCl2wM+8+IPKppL3wq8gkx50Hn7jh91jw9eROKi rR2AdlUbDIbk6Phwb+c4+v5gf/uYLPXKEIWzE9My4HCDxBaMpw4+Y4ZcIPkRhIs6rN/vdX8o H1HbR9Sfo+5+l965Gr04PHhZHnS4lncPt18d22WVeYmOD6LXb57t7+1I+ySv8yIea4aPwEFd rB5/IzMld6WP12jwvj/4rhtRT/H4JWtMmhm8kV4pdYZqygItW7dcOsjNqcWTZFaDpRHEk2YW qtJCzSgG8C/g2/wauGL2bzLXi+dNKiwtnTzp3fIZlMeF0/hby9Lf42eB8KfVko3X2Lvy779j 2fm/Tme++X8fPYT//+mTjfXb8/9TfD6PdrLJJRNARs1+K9ok46tD//ewHb3O8tnZNDn6234k 1chIYtGxlE3YKtidZvNJo1zUzGDMAu/IIaRWyrbkSpukToPUhvMMXEGcNYZg8MqFsCet0E0L Hnv/62jah5Oid5aM1xSm3aT7Hm6S4dGb9jl7YBr34ulZ/mX0E8vClU5nwRnWtt/Nv1y9Juoo sSoOqSsMoPbblroPS0MC76/4WMQUatY1or67+OXdhXRF9ykewp2L7ke/SOsHyYRenIz7KTWj euFPxQve4qG/YgbsQqnAxGNb8r821JvcA8FR7VSKW4C7sLJAX1yp6wUeyK3jpSDeb3o/erQC JYf6UTdMK/mAfhHZpBhdHaseGZSIk9M1J9VrWI4Fl0wTrgdO1+kYop22XPAnu+t1ebzVVaI3 cbNx8UohSrDS1hVfM0anKy19yPUCAHrp9cMAxSCA3j6dc8WMm4cCpLfB3dRbjnLr0vm9hrpv P7ef28/t5/Zz+7n93H5uP7ef28/t5/Zz+7n93H5uP7ef28/t5w/1+T8b0GI0APAAAA== --------------2IwJzRF7ULaQjBh7mLCOBcnJ--