From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Tremer To: development@lists.ipfire.org Subject: Re: [PATCH] GeoIP: Update to 1.25 / changed database path Date: Wed, 25 Jan 2017 11:10:18 +0000 Message-ID: <1485342618.30934.65.camel@ipfire.org> In-Reply-To: <1485329337.2384.1.camel@ipfire.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2121566573196262460==" List-Id: --===============2121566573196262460== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Yes, please. On Wed, 2017-01-25 at 08:28 +0100, Stefan Schantl wrote: > >=20 > > Thank you. Merged this patch. > >=20 > > @Stefan: We have a script that regularly updates the GeoIP database > > for the > > firewall rules. Why are we not updating GeoIP.dat as well? Could you > > extend the > > script? > >=20 > > -Michael >=20 > Hello Michael, >=20 > we have the "xt_geoip_update" script which is responsible for > downloading the latest GeoIPCountry data as a CSV coded file and call > the convert script to convert the data into a format which can be used > by the xt_geoip module from the iptables-xtables package. >=20 > It would be possible to extend this script to also download the > "GeoIP.dat" file which is required by this perl module and place it to > the correct location. >=20 > Is this the way you like to do? >=20 > Thanks in advance, >=20 > -Stefan > >=20 > >=20 > > On Wed, 2017-01-11 at 18:38 +0100, Matthias Fischer wrote: > > >=20 > > > Database path changed to '/usr/share/GeoIP' > > >=20 > > > Signed-off-by: Matthias Fischer > > > --- > > > =C2=A0config/rootfiles/common/GeoIP=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0|=C2=A0=C2=A0=C2=A04 +- > > > =C2=A0lfs/GeoIP=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0|=C2=A0=C2=A015 +-- > > > =C2=A0src/patches/geoip_1_25_change_database_path.patch | 139 > > > ++++++++++++++++++++++ > > > =C2=A03 files changed, 149 insertions(+), 9 deletions(-) > > > =C2=A0create mode 100644 > > > src/patches/geoip_1_25_change_database_path.patch > > >=20 > > > diff --git a/config/rootfiles/common/GeoIP > > > b/config/rootfiles/common/GeoIP > > > index d9b9d1025..d76ba645e 100644 > > > --- a/config/rootfiles/common/GeoIP > > > +++ b/config/rootfiles/common/GeoIP > > > @@ -6,7 +6,7 @@ usr/lib/perl5/site_perl/5.12.3/Geo/IP/PurePerl.pm > > > =C2=A0#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread- > > > multi/auto/Geo/IP > > > =C2=A0#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread- > > > multi/auto/Geo/IP/PurePerl > > > =C2=A0#usr/lib/perl5/site_perl/5.12.3/MACHINE-linux-thread- > > > multi/auto/Geo/IP/PurePerl/.packlist > > > -usr/local/share/GeoIP > > > -usr/local/share/GeoIP/GeoIP.dat > > > +#usr/share/GeoIP > > > +usr/share/GeoIP/GeoIP.dat > > > =C2=A0#usr/share/man/man1/geoip-lookup.1 > > > =C2=A0#usr/share/man/man3/Geo::IP::PurePerl.3 > > > diff --git a/lfs/GeoIP b/lfs/GeoIP > > > index 882d1a078..3e79da544 100644 > > > --- a/lfs/GeoIP > > > +++ b/lfs/GeoIP > > > @@ -1,7 +1,7 @@ > > > =C2=A0################################################################## > > > ########### > > > ## > > > =C2=A0#=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 > > > =C2=A0# > > > =C2=A0# IPFire.org - A linux based > > > firewall=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0# > > > -# Copyright (C) 2007-2014=C2=A0=C2=A0IPFire Team=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 > > > =C2=A0# > > > +# Copyright (C) 2007-2017=C2=A0=C2=A0IPFire Team=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 > > > =C2=A0# > > > =C2=A0#=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0 > > > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 > > > =C2=A0# > > > =C2=A0# This program is free software: you can redistribute it and/or > > > modify=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0# > > > =C2=A0# it under the terms of the GNU General Public License as > > > published > > > by=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0# > > > @@ -24,8 +24,8 @@ > > > =C2=A0 > > > =C2=A0include Config > > > =C2=A0 > > > -VER=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=3D 1.17 > > > -DATVER=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=3D 15022015 > > > +VER=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=3D 1.25 > > > +DATVER=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=3D 07012017 > > > =C2=A0 > > > =C2=A0THISAPP=C2=A0=C2=A0=C2=A0=C2=A0=3D Geo-IP-PurePerl-$(VER) > > > =C2=A0DL_FILE=C2=A0=C2=A0=C2=A0=C2=A0=3D $(THISAPP).tar.gz > > > @@ -42,8 +42,8 @@ objects =3D $(DL_FILE) GeoIP.dat-$(DATVER).gz > > > =C2=A0$(DL_FILE) =3D $(DL_FROM)/$(DL_FILE) > > > =C2=A0GeoIP.dat-$(DATVER).gz =3D $(DL_FROM)/GeoIP.dat-$(DATVER).gz > > > =C2=A0 > > > -$(DL_FILE)_MD5 =3D 42a6b9d4dd2563a20c8998556216e1de > > > -GeoIP.dat-$(DATVER).gz_MD5 =3D 508e3c10da15f2722774cf4014863976 > > > +$(DL_FILE)_MD5 =3D a47a1b71f7cd7c46cca9efcc448e0726 > > > +GeoIP.dat-$(DATVER).gz_MD5 =3D fac676d18785585568312f30b7851657 > > > =C2=A0 > > > =C2=A0install : $(TARGET) > > > =C2=A0 > > > @@ -73,11 +73,12 @@ $(subst %,%_MD5,$(objects)) : > > > =C2=A0$(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) > > > =C2=A0 @$(PREBUILD) > > > =C2=A0 @rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf > > > $(DIR_DL)/$(DL_FILE) > > > + cd $(DIR_APP) && patch -Np0 -i > > > $(DIR_SRC)/src/patches/geoip_1_25_change_database_path.patch > > > =C2=A0 cd $(DIR_APP) && perl Makefile.PL > > > =C2=A0 cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE) > > > =C2=A0 cd $(DIR_APP) && make install > > > - cd $(DIR_APP) && mkdir -p /usr/local/share/GeoIP && \ > > > - zcat $(DIR_DL)/GeoIP.dat-$(DATVER).gz > > > > /usr/local/share/GeoIP/GeoIP.dat > > > + cd $(DIR_APP) && mkdir -p /usr/share/GeoIP && \ > > > + zcat $(DIR_DL)/GeoIP.dat-$(DATVER).gz > > > > /usr/share/GeoIP/GeoIP.dat > > > =C2=A0 cd $(DIR_APP) && chmod 777 > > > /srv/web/ipfire/html/images/flags > > > =C2=A0 @rm -rf $(DIR_APP) > > > =C2=A0 @$(POSTBUILD) > > > diff --git a/src/patches/geoip_1_25_change_database_path.patch > > > b/src/patches/geoip_1_25_change_database_path.patch > > > new file mode 100644 > > > index 000000000..933e93d28 > > > --- /dev/null > > > +++ b/src/patches/geoip_1_25_change_database_path.patch > > > @@ -0,0 +1,139 @@ > > > +--- lib/Geo/IP/PurePerl.pm Tue Mar 30 15:41:34 2010 > > > ++++ lib/Geo/IP/PurePerl.pm Mon Jan 09 18:58:11 2017 > > > +@@ -129,7 +129,7 @@ > > > +=C2=A0 > > > +=C2=A0 > > > + # --- unfortunately we do not know the path so we assume the=C2=A0 > > > +-# default path /usr/local/share/GeoIP > > > ++# default path /usr/share/GeoIP > > > + # if thats not true, you can set > > > $Geo::IP::PurePerl::OPEN_TYPE_PATH > > > + # > > > + sub open_type { > > > +@@ -210,7 +210,7 @@ > > > +=C2=A0=C2=A0=C2=A0# this will be less messy once deprecated new( $path= , [$flags] > > > ) > > > +=C2=A0=C2=A0=C2=A0# is no longer supported (that's what open() is for) > > > +=C2=A0 > > > +-=C2=A0=C2=A0my $def_db_file =3D '/usr/local/share/GeoIP/GeoIP.dat'; > > > ++=C2=A0=C2=A0my $def_db_file =3D '/usr/share/GeoIP/GeoIP.dat'; > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0if ($^O eq 'NetWare') { > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0$def_db_file =3D 'sys:/etc/GeoIP/GeoIP.d= at'; > > > +=C2=A0=C2=A0=C2=A0} elsif ($^O eq 'MSWin32') { > > > +@@ -758,7 +758,7 @@ > > > + =3Ditem $gi =3D Geo::IP->new( [$flags] ); > > > +=C2=A0 > > > + Constructs a new Geo::IP object with the default database located > > > inside > > > your system's > > > +-I, typically I. > > > ++I, typically I. > > > +=C2=A0 > > > + Flags can be set to either GEOIP_STANDARD, or for faster > > > performance > > > + (at a cost of using more memory), GEOIP_MEMORY_CACHE. > > > +--- t/1_lookup.t Tue Mar 30 15:13:37 2010 > > > ++++ t/1_lookup.t Mon Jan 09 18:58:13 2017 > > > +@@ -2,7 +2,7 @@ > > > + use vars qw($dat); > > > +=C2=A0 > > > + BEGIN { > > > +-=C2=A0=C2=A0foreach my $file > > > ("GeoIP.dat",'/usr/local/share/GeoIP/GeoIP.dat') { > > > ++=C2=A0=C2=A0foreach my $file ("GeoIP.dat",'/usr/share/GeoIP/GeoIP.dat= ') { > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0if (-f $file) { > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0$dat =3D $file; > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0last; > > > +--- t/2_namelookup.t Tue Mar 30 15:21:37 2010 > > > ++++ t/2_namelookup.t Mon Jan 09 18:58:21 2017 > > > +@@ -2,7 +2,7 @@ > > > + use vars qw($dat); > > > +=C2=A0 > > > + BEGIN { > > > +-=C2=A0=C2=A0foreach my $file > > > ("GeoIP.dat",'/usr/local/share/GeoIP/GeoIP.dat') { > > > ++=C2=A0=C2=A0foreach my $file ("GeoIP.dat",'/usr/share/GeoIP/GeoIP.dat= ') { > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0if (-f $file) { > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0$dat =3D $file; > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0last; > > > +--- Changes Tue Mar 30 15:26:38 2010 > > > ++++ Changes Mon Jan 09 18:57:37 2017 > > > +@@ -35,7 +35,7 @@ > > > +=C2=A0 Country, City and Org requests benefit from > > > GEOIP_MEMORY_CACHE and > > > GEOIP_MMAP_CACHE > > > +=C2=A0 Add GEOIP_MMAP_CACHE support ( Peter Shipley )=C2=A0 > > > +=C2=A0 Now works with new format of GeoIP ISP > > > +- Corrected path to /usr/local/share/GeoIP/GeoIP.dat in > > > geoip-lookup > > > program. > > > ++ Corrected path to /usr/share/GeoIP/GeoIP.dat in geoip- > > > lookup > > > program. > > > +=C2=A0 > > > + 1.18=C2=A0=C2=A0January 8th 2007 > > > +=C2=A0 Replaced CS/Serbia and Montenegro with RS/Serbia, removed > > > ZR/Zaire, > > > added ME/Montenegro > > > +--- geoip-lookup Tue Mar 30 15:13:36 2010 > > > ++++ geoip-lookup Mon Jan 09 18:57:44 2017 > > > +@@ -15,7 +15,7 @@ > > > +=C2=A0 > > > + The I program will return the country for the IP > > > address or > > > + hostname given as the first command line argument. > > > +-It queries the GeoIP Country database in > > > C. > > > ++It queries the GeoIP Country database in > > > C. > > > +=C2=A0 > > > + By default it prints the ISO 3166 country code.=C2=A0=C2=A0Use the C<= -l> > > > option > > > + to print the country name. > > > +--- geoip-lookup-city Tue Mar 30 15:13:36 2010 > > > ++++ geoip-lookup-city Mon Jan 09 18:57:48 2017 > > > +@@ -6,7 +6,7 @@ > > > +=C2=A0 > > > + my $addr =3D shift; > > > +=C2=A0 > > > +-my $gi =3D Geo::IP::PurePerl->new( > > > "/usr/local/share/GeoIP/GeoIPCity.dat", > > > ++my $gi =3D Geo::IP::PurePerl->new( > > > "/usr/share/GeoIP/GeoIPCity.dat", > > > +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0GEOIP_STANDARD ); > > > +=C2=A0 > > > + if ($addr) { > > > +--- geoip-lookup-isp Tue Mar 30 15:13:36 2010 > > > ++++ geoip-lookup-isp Mon Jan 09 18:57:50 2017 > > > +@@ -7,7 +7,7 @@ > > > +=C2=A0 > > > + my $addr =3D shift; > > > +=C2=A0 > > > +-my $gi =3D Geo::IP::PurePerl- > > > >=20 > > > > new("/usr/local/share/GeoIP/GeoIPISP.dat",GEOIP_STANDARD); > > >=20 > > > ++my $gi =3D Geo::IP::PurePerl- > > > >=20 > > > > new("/usr/share/GeoIP/GeoIPISP.dat",GEOIP_STANDARD); > > >=20 > > > +=C2=A0 > > > + my $isp =3D $gi->org_by_name($addr); > > > +=C2=A0 > > > +--- geoip-lookup-netspeed Tue Mar 30 15:13:36 2010 > > > ++++ geoip-lookup-netspeed Mon Jan 09 18:57:53 2017 > > > +@@ -6,7 +6,7 @@ > > > +=C2=A0 > > > + my $addr =3D $ARGV[0]; > > > +=C2=A0 > > > +-my $gi =3D Geo::IP::PurePerl- > > > >=20 > > > > new("/usr/local/share/GeoIP/GeoIPNetSpeed.dat",GEOIP_STANDARD); > > >=20 > > > ++my $gi =3D Geo::IP::PurePerl- > > > >=20 > > > > new("/usr/share/GeoIP/GeoIPNetSpeed.dat",GEOIP_STANDARD); > > >=20 > > > +=C2=A0 > > > + my $netspeed =3D $gi->id_by_addr($addr); > > > +=C2=A0 > > > +--- geoip-lookup-org Tue Mar 30 15:13:36 2010 > > > ++++ geoip-lookup-org Mon Jan 09 18:57:59 2017 > > > +@@ -7,7 +7,7 @@ > > > +=C2=A0 > > > + my $addr =3D shift; > > > +=C2=A0 > > > +-my $gi =3D Geo::IP::PurePerl- > > > >=20 > > > > new("/usr/local/share/GeoIP/GeoIPOrg.dat",GEOIP_STANDARD); > > >=20 > > > ++my $gi =3D Geo::IP::PurePerl- > > > >=20 > > > > new("/usr/share/GeoIP/GeoIPOrg.dat",GEOIP_STANDARD); > > >=20 > > > +=C2=A0 > > > + my $org =3D $gi->org_by_name($addr); > > > +=C2=A0 > > > +--- geoip-lookup-region Tue Mar 30 15:13:36 2010 > > > ++++ geoip-lookup-region Mon Jan 09 18:58:01 2017 > > > +@@ -10,7 +10,7 @@ > > > +=C2=A0 > > > + my $addr =3D $ARGV[0]; > > > +=C2=A0 > > > +-my $gi =3D Geo::IP::PurePerl- > > > >=20 > > > > new("/usr/local/share/GeoIP/GeoIPRegion.dat",GEOIP_STANDARD); > > >=20 > > > ++my $gi =3D Geo::IP::PurePerl- > > > >=20 > > > > new("/usr/share/GeoIP/GeoIPRegion.dat",GEOIP_STANDARD); > > >=20 > > > +=C2=A0 > > > + my ($country,$region) =3D $gi->region_by_name($addr); > > > +=C2=A0 > > > +--- INSTALL Tue Mar 30 15:13:36 2010 > > > ++++ INSTALL Mon Jan 09 18:58:05 2017 > > > +@@ -3,7 +3,7 @@ > > > + # fetch latest GeoIP database, updated monthly > > > + wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCo > > > untry/GeoIP > > > .dat.gz > > > + gunzip GeoIP.dat.gz > > > +-mv GeoIP.dat /usr/local/share/GeoIP/GeoIP.dat > > > ++mv GeoIP.dat /usr/share/GeoIP/GeoIP.dat > > > +=C2=A0 > > > + perl Makefile.PL > > > + make --===============2121566573196262460== Content-Type: application/pgp-signature Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="signature.asc" MIME-Version: 1.0 LS0tLS1CRUdJTiBQR1AgU0lHTkFUVVJFLS0tLS0KVmVyc2lvbjogR251UEcgdjIKCmlRSWNCQUFC Q2dBR0JRSllpSWVhQUFvSkVJQjU4UDl2a0FrSGl0QVFBSWhvSWNvejh0M1JlL0xqN2VieW5FMDEK Q0ZFUWRjN1pGbFlLM3JHNVVuY0d5UHVQNnpzek00L2lUS3RLVG9SOGs3dVVQVGhYVmpGUFFkSVFm bi9aMEprbwpWR2JBcmVncFpqQ2JkUFhWMHNoUzFYcEYzZkg1akZFMStoeCtVVWVxeFl0MWpNRHpC akpyRmIzVUE5WmYzbk9zCnFhNXFNYzU0dEZVMnUzeXdyb3FJQkFiZjBXei9kYTNpWkNwK1JMbW0y bThyL1dYYjNUTkNtd1QvaUMwZVhaTE4KTjE0QjM3bjZ1d0RSQ0E0bDk2NWg3QkpEQm9vNlB6SU5l M3lGK25sUXdwYjh1bSt0ZlJ2bkxLbnYvQ3d4OVdsTwpRWlc3aGVsbVIvYjFpdjlOcEYvZlNZdkNX WWNkVkZYaTlrUWVqaVdZSTFleHhSMXMzTUE0YVRua1ZQRmhRYy9DCjFXbXRCNGlnR0VqNVZ6Q3B4 VXdVZDNxV3pVaGt1a1JIS0lJSklGMnQwUVQ4ZEMvdEhWblNMWThyNCt0VjhMUTQKUytKUnR1cDl1 OUhmUGIzaTVYZENrN04wQ04vVkhXRkFYeU1zRmRpOXhFVGx6cDNaWmVlMjZKVUMvS1RwVDlhRAo3 ZzJqbjUzU0hvQXNkRjVPUHBEZm01bVJYaVlLSHY5UFMvc0hiQzluck1FZjBkdldqcithUE02YVpN RkVxNkdHCi9IL2JGbFdRbm9UalhLWVl3ODgyVlEycGVYLzM0MGw0Tm1sOUFCVTExVSs5eC9TSTlp dXJpVkIwbWF6TCtJZloKam9sK2NkUHBxUSs1NHNKSFhvRlVvNUZZRDBzdzQyaUJIbUE3Wm13akp2 M2hUQXc0bnVOTGtFOTJha2tGSkZ0KwpqMEdvemRVMUVTMWRFb0MyTk9yWAo9SkJPWgotLS0tLUVO RCBQR1AgU0lHTkFUVVJFLS0tLS0K --===============2121566573196262460==--