linux下coreseek环境安装 、MySQL数据源、sphinx扩展安装及php调用一、安装m4-1.4.13、autoconf-2.64、automake-1.11、libtool-2.2.6
下载安装m4-1.4.13、autoconf-2.64、automake-1.11、libtool-2.2.6,coreseek安装搭好安装环境。
1 m4-1.4.13下载地址: http://mirrors.kernel.org/gnu/m4/m4-1.4.13.tar.gz 2 $ tar -xzvf m4-1.4.13.tar.gz 3 $ cd m4-1.4.13 4 $ ./configure --PRefix=/usr/local 5 $ make && make install 6 $ cd .. 7 8 autoconf-2.64下载地址: http://mirrors.kernel.org/gnu/autoconf/autoconf-2.64.tar.gz 9 $ tar -xzvf autoconf-2.64.tar.gz 10 $ cd autoconf-2.64 11 $ ./configure --prefix=/usr/local 12 $ make && make install 13 $ cd .. 14 15 automake-1.11下载地址: http://mirrors.kernel.org/gnu/automake/automake-1.11.tar.gz 16 $ tar xzvf automake-1.11.tar.gz 17 $ cd automake-1.11 18 $ ./configure --prefix=/usr/local 19 $ make && make install 20 $ cd .. 21 22 libtool-2.2.6下载地址: http://mirrors.kernel.org/gnu/libtool/libtool-2.2.6b.tar.gz 23 $ tar xzvf libtool-2.2.6b.tar.gz 24 $ cd libtool-2.2.6b 25 $ ./configure --prefix=/usr/local 26 $ make && make install 27 $ cd ..
二、安装mmseg(coreseek所使用的词典)
1 tar xzvf coreseek-3.2.14.tar.gz2 cd mmseg-3.2.143 ./bootstrap #输出的warning信息可以忽略,如果出现error则需要解决4 ./configure --prefix=/usr/local/mmseg35 make && make install
三、安装coreseek(sphinx)
1 cd csft-3.2.142 sh buildconf.sh #输出的warning信息可以忽略,如果出现error则需要解决3 ./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql=/usr/4 (如果出现mysql问题,须检查是否安装mysql,--with-mysql=mysql的安装位置)5 make && make install
四、测试mmesg分词,coreseek搜索(需要预先设置好字符集为zh_CN.UTF-8,确保正确显示中文)
1 $ cd testpack 2 $ cat var/test/test.xml #此时应该正确显示中文 3 $ /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml 4 $ /usr/local/coreseek/bin/indexer -c etc/csft.conf --all 5 $ /usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索
如果出现 xmlpipe2 support NOT compiled in. To use xmlpipe2, install missing XML libra 的错误
执行命令:
1 apt-get install expat-devel
重现编译coreseek,步骤三,注意make clean.
测试结果如下:
1 $ cd testpack 2 $ cat var/test/test.xml #此时应该正确显示中文 3 $ /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml 4 $ /usr/local/coreseek/bin/indexer -c etc/csft.conf --all 5 $ /usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索6 返回结果:7 Words:8 1. '网络': 1 documents, 1 hits9 2. '搜索': 2 documents, 5 hits
五、建立mysql数据源的配置文件
编写配置文件my.conf:
1 #源定义 2 source files 3 { 4 type = mysql 5 sql_host = localhost 6 sql_user = root 7 sql_pass = f103 8 sql_db = test 9 sql_port = 3306 #default is 330610 sql_query_pre = SET NAMES utf811 sql_query = SELECT id,filepath,filename,filesize,filemtime,filelabel As label from files12 sql_query_info_pre = SET NAMES utf813 sql_query_info = SELECT * FROM files WHERE id=$id #命令行查>询时,从数据库读取原始数据信息14 }15 16 #索引17 index files18 {19 source = files20 path = /usr/local/coreseek/var/data/files21 docinfo = extern22 charset_dictpath = /usr/local/mmseg3/etc/23 charset_type = zh_cn.utf-824 mlock = 025 morphology = none26 min_word_len = 127 html_strip = 028 }29 30 #索引器31 indexer32 {33 mem_limit = 128M34 }35 36 #守护进程37 searchd38 {39 port = 931240 log = /usr/local/coreseek/var/log/searchd_files.log41 query_log = /usr/local/coreseek/var/log/query_files.log42 read_timeout = 543 max_children = 3044 pid_file = /usr/local/coreseek/var/log/searchd_files.pid45 max_matches = 100046 seamless_rotate = 147 preopen_indexes = 048 unlink_old = 149 }
六、建立test数据库,其中包含表files
id:id值,主键,自增
filepath:文件路径
filename:文件名
filesize:文件大小
filemtime:文件最后修改日期
filelabel:文件标签、描述
1 CREATE TABLE files ( 2 id int primary key not null auto_increment, 3 filepath varchar(255) not null, 4 filename varchar(255) not null, 5 filesize varchar(255) not null, 6 filemtime varchar(255) not null, 7 filelabel text 8 ); 9 10 INSERT INTO files (id,filepath, filename, filesize,filemtime,filelabel) VALUES (1,'/mnt/fuse/text1.txt', 'text1.txt', '1M', '2014-07-23 10:00:00', '测试文件');11 12 INSERT INTO files (id,filepath, filename, filesize,filemtime,filelabel) VALUES (2,'/mnt/fuse/test2.txt', 'text2.txt', '241M', '2014-07-23 11:09:11', '据国外媒体报道,谷歌将巨资收购百度,涉及金额高达300亿美元。谷歌借此重返大陆市场。13 该报道称,目前谷歌与百度已经达成了收购协议,将择机对外公布。百度的管理层将100%保留,但会将项目缩减,包括有啊商城,以及目前实施不力的凤巢计划。正在进行测试阶段的视频网站qiyi.com将输入更多的Youtube资源。14 (YouTube在大陆区因内容审查暂不能访问)。15 该消息似乎得到了谷歌CEO施密特的确认,在其twitter上用简短而暧昧的文字进行了表述:“ Withdraw from that market? u\'ll also see another result, just wait... ” 意思是:从那个市场退出?你还会看到另外一个结果。16 毫无疑问,那个市场指的就是中国大陆。而另外的结果,对应此媒体报道,就是收购百度,从而曲线返回大陆搜索市场。17 在最近刚刚结束的深圳IT领袖峰会上,李彦宏曾言,“谷歌没有退出中国,因为还在香港”。也似乎在验证被收购的这一事实。18 截止发稿,百度的股价为597美元,市值为207亿美元。谷歌以高达300亿美元的价格,实际溢价高达50%。而谷歌市值高达1796亿美元,而且手握大量现金,作这样的决策也在情理之中。19 近日,很多媒体都在报道百度创始人、CEO李彦宏的两次拒购:一次是百度上市前夕,李彦宏拒绝谷歌的并购,这个细节在2月28日央视虎年首期对话节目中得到首次披露﹔一次是在百度国际化战略中,拒绝采用海外并购的方式,>而是采取了从日本市场开始的海外自主发展之路。这也让笔者由此开始思考民族品牌的发展之路。20 收购是打压中国品牌的惯用伎俩21 2010年2月28日,央视经济频道《对话》节目昨晚推出虎年首期节目,百度董事长兼CEO李彦宏作为嘉宾做客节目。李彦宏首度谈及2005年百度上市前夕,谷歌CEO施密特曾秘密造访百度时秘密谈话的内容,主要是劝阻百度上市,李22 彦宏断然拒绝了施密特的“好意”。今天看来,施密特当日也许已有不祥的预感,这个几百人的小公司终有一日会成为他们的大麻烦。23 本期《对话》一经播出,便引发了业界讨论。24 外资品牌通过收购打压中国品牌的案例不胜枚举。从以往跨国企业并购的中国品牌来看,真正让其活下来的品牌并不多,要么被雪藏,要么被低端化。25 因此,2005年百度没有接受Google的收购邀请,坚持自主发展,这对于保护中国品牌,维护中国网民信息安全有着至关重要的作用。当前百度市场份额高达76%,并持续增长,这也充分验证了李彦宏拒绝收购决策的正确性。26 今天看来,“百度一下”已经成为3亿多中国网民的网络生存法则,而直到今天环视全球,真正能像中国一样,拥有自己独立搜索引擎的只有4个国家!我们也许应该庆幸当时李彦宏的选择。这个故事也告诉我们,中国企业做品牌还>要靠自己!27 收购也可能是中国企业走出去的陷阱28 同样在2月28日,亚布力第十届年会上,李彦宏在论坛上指出:“我们和很多其它公司的国际化路子是很不一样的,我们不是去买一个国外的公司,”,李彦宏解释了百度率先选择日本作为走出去的对象的原因,因为日本和中国一衣29 带水的近邻优势,日本的市场规模,在日本也没有一家独大的搜索引擎。30 中国企业收购这些外资品牌目的是“借船出海”。外资品牌进入中国是收购中国优质品牌,而中国企业进入国外市场的收购策略恰恰相反,这也是中国企业借船出海屡屡失败的原因所在。31 笔者认为,中国互联网公司走出去要依靠自身发展,并不能单纯依靠收购。李彦宏在百度成立伊始就抱定了国际化决心,使百度真正在面对国际化机遇时,更加冷静和具有前瞻力。李彦宏也承认当前百度在日本还处于初级发展阶>段,但他也预言“2012年,百度与Google划洋而治”,对此我们拭目以待!');32 33 INSERT INTO files (id,filepath, filename, filesize,filemtime,filelabel) VALUES (3,'/mnt/fuse/text3.txt', 'text3.txt', '31M', '2014-07-23 10:20:20', '测试,音乐,刘泉,查不到这条记录吗!!!');
七、执行索引(查询、测试前必须执行一次)
1 /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/my.conf --all --rotate
八、启动searchd服务
1 # /usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/my.conf
如果第一次出现pid文件不存在的情况,可以使用:
1 # /usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/my.conf --pidfile
九、查询关键字
1 # /usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/my.conf 测试 2 Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)] 3 Copyright (c) 2007-2011, 4 Beijing Choice Software Technologies Inc (http://www.coreseek.com) 5 6 using config file '/usr/local/coreseek/etc/my.conf'... 7 index 'files': query '测试 ': returned 3 matches of 3 total in 0.003 sec 8 9 displaying matches:10 1. document=1, weight=111 id=112 filepath=/mnt/fuse/anime.mp413 filename=anime.mp414 filesize=287M15 filemtime=2014-07-23 11:09:1116 filelabel=测试数据,到底有没有!!!17 2. document=2, weight=118 id=219 filepath=/mnt/fuse/test1.txt20 filename=test1.txt21 filesize=7M22 filemtime=2014-07-23 11:28:1123 filelabel=据国外媒体报道,谷歌将巨资收购百度,涉及金额高达300亿美元。谷歌借此重返大陆市场。24 该报道称,目前谷歌与百度已经达成了收购协议,将择机对外公布。百度的管理层将100%保留,但会将项目缩减,包括有啊商城,以及目前实施不力的凤巢计划。正在进行测试阶段的视频网站qiyi.com将输入更多的Youtube资源。25 (YouTube在大陆区因内容审查暂不能访问)。26 该消息似乎得到了谷歌CEO施密特的确认,在其twitter上用简短而暧昧的文字进行了表述:“ Withdraw from that market? u'll also see another result, just wait... ” 意思是:从那个市场退出?你还会看到另外一个结果。27 毫无疑问,那个市场指的就是中国大陆。而另外的结果,对应此媒体报道,就是收购百度,从而曲线返回大陆搜索市场。28 在最近刚刚结束的深圳IT领袖峰会上,李彦宏曾言,“谷歌没有退出中国,因为还在香港”。也似乎在验证被收购的这一事实。29 截止发稿,百度的股价为597美元,市值为207亿美元。谷歌以高达300亿美元的价格,实际溢价高达50%。而谷歌市值高达1796亿美元,而且手握大量现金,作这样的决策也在情理之中。30 近日,很多媒体都在报道百度创始人、CEO李彦宏的两次拒购:一次是百度上市前夕,李彦宏拒绝谷歌的并购,这个细节在2月28日央视虎年首期对话节目中得到首次披露﹔一次是在百度国际化战略中,拒绝采用海外并购的方式,>而是采取了从日本市场开始的海外自主发展之路。这也让笔者由此开始思考民族品牌的发展之路。31 收购是打压中国品牌的惯用伎俩32 2010年2月28日,央视经济频道《对话》节目昨晚推出虎年首期节目,百度董事长兼CEO李彦宏作为嘉宾做客节目。李彦宏首度谈及2005年百度上市前夕,谷歌CEO施密特曾秘密造访百度时秘密谈话的内容,主要是劝阻百度上市,李33 彦宏断然拒绝了施密特的“好意”。今天看来,施密特当日也许已有不祥的预感,这个几百人的小公司终有一日会成为他们的大麻烦。34 本期《对话》一经播出,便引发了业界讨论。35 外资品牌通过收购打压中国品牌的案例不胜枚举。从以往跨国企业并购的中国品牌来看,真正让其活下来的品牌并不多,要么被雪藏,要么被低端化。36 因此,2005年百度没有接受Google的收购邀请,坚持自主发展,这对于保护中国品牌,维护中国网民信息安全有着至关重要的作用。当前百度市场份额高达76%,并持续增长,这也充分验证了李彦宏拒绝收购决策的正确性。37 今天看来,“百度一下”已经成为3亿多中国网民的网络生存法则,而直到今天环视全球,真正能像中国一样,拥有自己独立搜索引擎的只有4个国家!我们也许应该庆幸当时李彦宏的选择。这个故事也告诉我们,中国企业做品牌还>要靠自己!38 收购也可能是中国企业走出去的陷阱39 同样在2月28日,亚布力第十届年会上,李彦宏在论坛上指出:“我们和很多其它公司的国际化路子是很不一样的,我们不是去买一个国外的公司,”,李彦宏解释了百度率先选择日本作为走出去的对象的原因,因为日本和中国一衣40 带水的近邻优势,日本的市场规模,在日本也没有一家独大的搜索引擎。41 中国企业收购这些外资品牌目的是“借船出海”。外资品牌进入中国是收购中国优质品牌,而中国企业进入国外市场的收购策略恰恰相反,这也是中国企业借船出海屡屡失败的原因所在。42 笔者认为,中国互联网公司走出去要依靠自身发展,并不能单纯依靠收购。李彦宏在百度成立伊始就抱定了国际化决心,使百度真正在面对国际化机遇时,更加冷静和具有前瞻力。李彦宏也承认当前百度在日本还处于初级发展阶>段,但他也预言“2012年,百度与Google划洋而治”,对此我们拭目以待!43 3. document=3, weight=144 id=345 filepath=/mnt/fuse/test2.txt46 filename=test2.txt47 filesize=17M48 filemtime=2014-07-01 11:28:1149 filelabel=音乐文件,刘泉,测试用用,查不出来吗50 51 words:52 1. '测试': 3 documents, 3 hits53 54 # /usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/my.conf 音乐55 Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]56 Copyright (c) 2007-2011,57 Beijing Choice Software Technologies Inc (http://www.coreseek.com)58 59 using config file '/usr/local/coreseek/etc/my.conf'...60 index 'files': query '音乐 ': returned 1 matches of 1 total in 0.003 sec61 62 displaying matches:63 1. document=3, weight=164 id=365 filepath=/mnt/fuse/test2.txt66 filename=test2.txt67 filesize=17M68 filemtime=2014-07-01 11:28:1169 filelabel=音乐文件,刘泉,测试用用,查不出来吗70 71 words:72 1. '音乐': 1 documents, 1 hits
九、安装sphinx扩展
1、安装libsphinxclient
1 # cd /home/liuquan/Desktop/coreseek/coreseek-3.2.14/csft-3.2.14/api/libsphinxclient 2 # ./configure --prefix=/usr/local/sphinxclient 3 # make && make install
2、安装sphinx的PHP扩展
1 下载地址:http://pecl.php.net/package/sphinx 2 # tar zxvf sphinx-1.3.0.tgz 3 # cd sphinx-1.3.0 4 # phpize (如果没有phpize,需要apt-get install php5-dev) 5 # ./configure --with-php-config=/usr/bin/php-config --with-sphinx=/usr/local/sphinxclient 6 # make && make install
3、修改配置
1 # cd /etc/php5/conf.d2 # vim sphinx.ini3 #4 # 修改sphinx.ini,添加extension=sphinx.so 5 # service apache2 restart
查看phpinfo,sphinx扩展是否成功
QQDdV/dkY4zkqnUgazhO7k+w8J64L/LHEbCS2saDxq5azq6n6eRLEksiRyJmsj9aWkUzly4jVGi8SsSAAAi0TMNbpW86BVBDosgSqSJ1U03jRDrJLI9kBsv6MxI8RT0qsyggXdYTefXJBQ6r19b5Q0K+psHqV3n1y4Qap82pSmW5NxUxdm89+gyqfoka+Uk2Vc0hTbqpIxIMACJghAA9qBhCSQaCeADeSe45U2bURDsS/l4SzyeorkqeSZKQRVNqGP9deWO9BGUVTYU1mbQzn5eqccas7aGuy6+aTz9fXyx6m6pSmauAaBECg9QRa3UFbXyQkQaDzEmCTqHwglYRR5fuk/J7UZ2udopgkq4gnbNpyXsPjXOxrlh45IbagqSQ3SK0PrZq3bVxCK7LzniKrgfW5mIlk9WAzNRABAiDQagLwoK1GBUEQYIixJ1KTNoaUq6hyIZWNpdLXarm4E0/UlJHgGeLVLGnq9usaNu9wQuomi6BN893+a8afrFfUFMtm1HwQRZCo5+2vCyWCQBchgJ1EXcTQaObtICAkCSSJuNXQY6TJIO11Iof63blUQKy6aS1MKMkiqfoPYgJIVPeTCGeoOq2pZPtey0myifgGB36aymaR6AiJ3YmkJP2GNGGkUbZv/SgdBDolAXjQTmlWNKrdCHDbcYeQaIiR8lUfGvFD6iMkGEfiEQ3kK6jyn6Q1tu3ISKG3JYpHwo9IbPh9BiVVLiDNDap6moRH9O+DDyfpYip7/7bUhEJAoGsRwCxu17I3Wvu3CKhJtYKU20mTSmxFbUmFpPmFKsOofJuRsjXvUelzpE7VJ6lI8zOVjyblZSOS7RfFe4Skj9cUr3qJlFd1n9k/qPw/NZH8f5EkuP3qR8kg0GkJMCzbhk0LnRYHGgYCLRAoargtyLQc92N7tttrkpVBVHnBtGhHSuF+TRABBEDglghgDHpLuCAMAiAAAiAAAjUE4EFxK4AACIAACIBAWwjAg7aFGvKAAAiAAAiAANZBcQ+AQGsJtHIdtLXFdTA5rIN2MINAHQsgAA9qAUaCiiAAAiAAAh2QAGZxO6BRoBIIgAAIgIAFEIAHtQAjQUUQAAEQAIEOSAAetAMaBSqBAAiAAAhYAAF4UAswElQEARAAARDogATgQTugUaASCIAACICABRCAB7UAI0FFEAABEACBDkgAHrQDGgUqgQAIgAAIWAABeFALMBJUBAEQAAEQ6IAE4EE7oFGgEgiAAAiAgAUQgAe1ACNBRRAAARAAgQ5IAB60AxoFKoEACIAACFgAAXhQCzASVAQBEAABEOiABOBBO6BRoBIIgAAIgIAFEIAHtQAjQUUQAAEQAIEOSAAetAMaBSqBAAiAAAhYAAGBKR0ZhjGVhHgQAAEQAAEQ6PQEWJZtuY0mPSiXbe3auJYzIxUEuhqBBQsC0C+6mtHR3q5JgOvsZhuOWVyziCAAAiAAAiAAAkYIwIMagYIoEAABEAABEDBLoKVZXLOZO5PA/PnDOkhzIiL+6CCaQA0QAAEQAIEWCGAM2gIcJIEACIAACICASQLwoCbRmEkooTIFFdmRMq2ZYAtJzWQRAQIg0HEJVB5bvTBgwYLwqDx1UyVbSGoqarhWXts2iduc8tKGeKVxAcRaHgF40HawmYD4AcQfTIykHQq/u0Wqr0W+yX2hBK5JLL+7iqB2EAABELjrBLAO2g4mkJLVwXYo9m4XyWpVZt6Nutsaon4QAAEQuJME4EFraVeTahlVbiZtBZGIeP5ktZmENlTWi9QaEr1Mmo2kKSBeGFl/QXx5vY20B6nsM1LnEO9Bsl5HfGsibhZXn8sqnsTdaktYTJoNpLlRL6b9jkqfI9aLZDHES6eyQNLwyCq2sfXV2XE/vr0rNr6Am/cRyBVuITOeXTqU2ffhkvfTye+pld+MlCuvbJq84niRXcim9x/zEXIzSy+/lKR1HTVpyF/HItPLxN2HLJw353FPKx61kERsdW7U7u/XxiZlVBLP2nX0mOmLQwc6C2qyuI+dOuTakT3XtP59eBdSyzgNq89/NmYBkdOUH94M7YV76E72WNTVCgLc/Xxo7/a1xy+lV7ACO6/Q0JkvB/W0Zmq7wOjQgOzo/Wml/G6DFi2c95ibmCF12uGI16KSrxYrtURWDr3HT3r830E9pbU/K6MuOvfJqqgfUkpE9R2qkR4maiRtafK6b77dcKmQp/CdOVaqaYXyELEkApjFrbEWG0MVa0mrIPFiEj9FvEru3q83ZPVWEjxNQmfS7qeypdTwdyqUrxHrSVxP00ZSxQ6Ttq9eQ/ww4ovqxXiPkdVEojQq/4CU/yANS4L/kLhfoxKqLq/e9Ft8gU3wuNBnJgaNVKgyC6q4Hm4ILfxqVPbxE4VeweF+dlV5CZ98/kN8Zf3g0UgSWxaz+aPXjyRlsD2DA3x7KrOjI9fM35XGPUoYQsbRPUe1niED+w3wGfVAT6EuUu47OSgofGQvW9xAtZTwt6MQYMtjt6xceigxXeofPmGUX3Xani2rlsUV13Wc7JjDqYoh49wEqvxzH393KleXoCm+nqt1C5gVGjZnVF/RzSt7t6z5KkNV16KMI3tOCnoPdxI071A6GVM1siW/bvpi3aVCtbhHQE/VgV1nbnYURtDjNhHA+KEWZBXpvIwt8byJ70uSD4nhnENJTaroa7IaRWwIlYQSu5s0H1EdOME6snmE1AuobDtpTxD7tM6bNg/CDSSdoBuYlm2qFROQ6FNSjSDV/6iKyzCGpHOb5tOqKrgNDDwrR4WLr0ePGQ8+6sg9LmuLDGLcDy8arUrXjMB5Hz7mLVUOqHjt432lf+xMfzSgf03ZzZOGul7afIZb1rQNf+GVxV6ikvNrw9YkZMccujBltiEPv88TW/4V5KxzluprzNmDmbkiz3H/fsKXG24jgEBHI6AtTdx4inv8VTz51KzZzvxip7zwzSnRBxOuDxthUFU6dP7n8/xEadq4FTGFualZqmBnscj/0Td3CPmkVSmrR/W58fqyy4Un/yxUe8gMWayHPbvhGT9ZxYVXl35+pHGH4gRM1thP9uNFbvZINu35xW/0FeUdXxW66QpWQjraDfO39IEHrcHHBJEkhKp+o8r/08d0J6s9JO5Rk8rrrvvAdCfOi2jKSFupm+k1BMFgfZKz/krnCY0HgZcunnHQp9aJOZFkDqk+1cVxE8U8/fCuYbDqt3DygJTdSTt3rN+pi5cHhr+0MkTaSEZr5JcbHZxsdfoJbD24+ebyqtzSam6Ea8jVPEldnl+g69YOPgouE2Pl6O5ICenKwhtK1lafx823rwJjzUbQcdFxCWhq7ueCzauWbK5TsziroHY3rbOnIzc9qxVZWxEValTc7A+xyrTjW9/dfya5tG6kSspKVd1Fd3ddFkbSfYA9Hclp1KG4GkzVmFfqVKgrwsG3G9ezeHIXNwe6UtBxyUGzWycAD1rLzIYkP5GkgDTJpPovVR0h5QYSvVGTqkkl6ktsKun6gw03KOR6TU0Sw9d/MOthDAJNBo2pVPlFTTnV/ybxUf0yaoPAiH0mvnhgfFlWdvblxAPv7E6MjYpODXpQpK+zsoxbs7EuzskubpRHd5F7LbecdZJX5Sbqpo0kTjIR941hkGqeJLBWKBhKZwuTClRhtsLK/MwbnKjYnhvvVuvz8AW8Or0N415WiydpA0783+EI8GvuZ/vpc2aF1CwzsBrGzlNIZw3KGuZuGszgaIvOLP/+VDLJxz8yc1pPfuKPa77IaNSuvMwbFayTTHkjuZCLb9ShdB3ERI1e8lx7rt9ryzLLNGTPKIvzG6wMdThuUKgtBOBBa6ix0VT2OvEDiWdHmjR9pGP9fKzqKSobT9ymIc5xMFOIz40C/35fqCLlM6RWkeAjEv1GFQeo/D8ke7+RFav+fOvDH4o8+vZRSNXZeboXSCRyKc/Ks5c9pRWmRG5afl16LuZac8NXJKyd+6m/883zp3RzSEOne3CPwDUD3+ZJPInvEwHW8WeKtn+6MsdPnnn2IrcC6hJ4v7+Ymv06El/mIGPouip511ubzrn3uf/ZQKfawXhzLRADAneBAE/mo7+fC/cejBENdZNUFlxNS0pxnbfdR2FSm9ojOBhSFaSf3d/YfXK5yuO+mlfh53TzwkmuGzXuUFyqyRoH9J3hK467UPDdum+Z4bJLvyUaHklNqoEEiyNgduhkcS1qq8LcDK2AVF9T1QpSZRH/UbJ+tr4oMTcYPc2tkeh20tp8QCbXH2+lcs2nVJlANIKkT5PoE92+X+0aqjreqAi+vL8LP+3s75t+/nlrQmE3z3sXz73PQyDsP+nJJ3tz+4T/jLxYNfIBP5tm1bqPmzpCdeVMrkbkOGjRPx8JsKof+xpJYmyCnnzl3ZD+bpQRHXfxmshl9KSFax/uXbcRsUHxjJ3/1Lnecp466+jx6B3nbzZ7zbyZKogAgTtMgJEFzV68/H7fniXntkfu33jsXCrfa9IgxxYe9Xj297z68CA3YUnUD5u+SrYZ27vpyMJ93JTh1VdOX1c371C6xpmqkZHfP2fh3P72TG7c5ugM11EDDcsid5gHqmtHAoyp88+42boudYqT8d/Fbfhein4h8w6Ev/W7uDX79b0eem/rhO6NvwZaSLoDreosVeB0s85iSbQDBMwQ4Dq7Kf9YlxNjUDMQkQwCIAACIAACRgnAgxrFgkgQAAEQAAEQMEMAs7hmACEZBBoSwCwu7gcQ6CIEMIvbRQyNZoIACIAACNwFApjFvQvQUSUIgAAIgEAnINDSLG4naB6aAAIgAAIgAAJtI2B2L27T954aVtOl3mZpG1/k6moEsA7a1SyO9nZZAlxnN9t2zOKaRQQBEAABEAABEDBCAB7UCBREgQAIgAAIgIBZAvCgZhFBAARAAARAAASMEIAHNQIFUSAAAiAAAiBglgA8qFlEHUyA+3nbhQELFoRH5eFX3TuYaaAOCIBAFyPQ0l7cLobitjZXm3XkP1N3ZJLiga3vzPA2nJxdfXXFGx/uKGYGPvnB+tG6cwPbFHgyl169i9V97IRNzhptU2nIBAJdkUB11qG3v4s+mZZXwrXeLmTT+4/5NDvenjvY8/qZLUt3JyTnl3OnkgllLsNHTlkyZWiP5pJs5aXft38UeTqxWCOQe0yY+Pi/7+slR//sCndWW7/HuwKbv9NGnvPgYF+ugILTkTkqQ0GVmccPc2dh8/o+7G9nHjurVdUcid1EDfHgRxdvf2vp8nvsDUd7/x0tkRcEuiYBVdHVi0UiL095i83XluX+lS/pMXzIkEBPuao0JzYqYtnJwmb9Upt7ct38708kltgN9ffuXpoeuWPV4pgCTYtFI7GTEMAYtJ0Mybcf+HDf7xNTCqNOZC109xSTMikm4SaRaMDYeyV5UT9uX3v8UnoFK7DzCg2d+XJQT2um5vQx97FTh1w7suca/+Elb8++ufftXbHxBdwx2QK5wi1kxrNLAySxq19+KUlrOL+MX50btfv7tbFJGZXEs3YdPWb64tCBzoKaolxHhwZkR+9PK+V3G7Ro4bzH3MR4LG4nc6NYyyJg7Tt/7wdU8ef6Sf89ozu43ngQ9Al7bW+YPk2T++17b36ewxaVVHGusdETsDp37y+J3MHb3o+8/OU4h7yjH07+Pj3uwLErI6d54+vVONhOFGt+MNSJGntHm8KzHTVG14Py4mL/5OaAqq7+dLaMSDwy2O3S1pVLDyWmS/3DJ4zyq07bs2XVsrjiugfbjKN7jmo9Qwb2ddGkrN70W3yBTfC40GcmBo1UqDILqho9/7JlMZs/ev1IUgbbMzjAt6cyOzpyzfxdaRW17cyOOZyqGDLOTaDKP/fxd6dymz0831EgqAwELJBA5V/Hvvhhx/KIiPU5JO4R/NwopyaTuGxV1pk8rmEyP085n3j27p4K7ir/z9QK1gKbC5VvkQAekm4RWOvFGfsBY0cIk4+XxO/LeKiX8lg059ms/B9ySf/2q1IixZNPzZrtzC92ygvfnBJ9MOH6sBGGovl9ntjyryBn7tGm4txz3GYhnpWjwsXXo8eMBx911I0hK+s00JZe2qx7gLYNf+GVxV6ikvNrw9YkZMccujBltkFGOnT+5/P8