summaryrefslogblamecommitdiffstats
path: root/src/config-db/t/10-vendor-os.t
blob: a71ee4acf4b1ece17d5c82293c76b32dfc6bf518 (plain) (tree)
1
2
3
4
5

                           


             








                                      

                                                            
  

                     
                        

   

                                                                        

  
   

                                                          


                   

                         

   

                                                              


                   

                           

                   


                                       

   



                                                              












                                                                               

                                                                   







                                                                        

                                                                           







                                                                       


                                                








                                                                   

                                                



                                                                            

                                                     




                                                            


                                                                      








                                                                   


                                                                               






                                                                        


                                                                    








                                                                   

                                             

   

                                            

   

                                                         



                                                             

                                                          

   

                                                                    

   

                                                                                




                                                                                 

                                                                           



                                                                            


                                                                           

                                            

                                                                

  

                                                                            

                                             

                                                       


                                                                           


                                                    
  
   

                                                                              

   


                                                    
  
                                                                              

                                                                       


                                                    

   

                                                 

   

                                                               
  
                                                                              
   

                                                            
  
                                                                        
   

                                                             


                                                                                


                                                    


                                                                          


                                                    

  




                                                                               


                        
use Test::More qw(no_plan);

use strict;
use warnings;

use lib '/opt/openslx/lib';

# basic init
use OpenSLX::ConfigDB;

my $configDB = OpenSLX::ConfigDB->new;
$configDB->connect();

is(
    my $vendorOS = $configDB->fetchVendorOSByFilter, undef, 
    'no vendor-OS yet (scalar context)'
);

my $wrongVendorOS = {
    'comment' => 'test',
};
ok(
    ! eval { my $vendorOSID = $configDB->addVendorOS($wrongVendorOS); },
    'trying to insert an unnamed vendor-OS should fail'
);

is(
    my @vendorOSes = $configDB->fetchVendorOSByFilter, 0, 
    'no vendor-OS yet (array context)'
);

my $inVendorOS1 = {
    'name'    => 'vos-1',
    'comment' => '',
};
is(
    my $vendorOS1ID = $configDB->addVendorOS($inVendorOS1), 1,
    'first vendor-OS has ID 1'
);

my $inVendorOS2 = {
    'name'    => 'vos-2.0',
    'comment' => 'batch 2',
};
my $inVendorOS3 = {
    'name'    => 'vos-3.0',
    'comment' => 'batch 2',
    'clone_source' => 'kiwi::test-vos',
};
ok(
    my ($vendorOS2ID, $vendorOS3ID) = $configDB->addVendorOS([
        $inVendorOS2, $inVendorOS3
    ]),
    'add two more vendor-OSes'
);
is($vendorOS2ID, 2, 'vendor-OS 2 should have ID=2');
is($vendorOS3ID, 3, 'vendor-OS 3 should have ID=3');

# fetch vendor-OS 3 by id and check all values
ok(my $vendorOS3 = $configDB->fetchVendorOSByID(3), 'fetch vendor-OS 3');
is($vendorOS3->{id},           3,                'vendor-OS 3 - id');
is($vendorOS3->{name},         'vos-3.0',        'vendor-OS 3 - name');
is($vendorOS3->{comment},      'batch 2',        'vendor-OS 3 - comment');
is($vendorOS3->{clone_source}, 'kiwi::test-vos', 'vendor-OS 3 - clone_source');

# fetch vendor-OS 2 by a filter on id and check all values
ok(
    my $vendorOS2 = $configDB->fetchVendorOSByFilter({ id => 2 }), 
    'fetch vendor-OS 2 by filter on id'
);
is($vendorOS2->{id},           2,         'vendor-OS 2 - id');
is($vendorOS2->{name},         'vos-2.0', 'vendor-OS 2 - name');
is($vendorOS2->{comment},      'batch 2', 'vendor-OS 2 - comment');
is($vendorOS2->{clone_source}, undef,     'vendor-OS 2 - clone_source');

# fetch vendor-OS 1 by filter on name and check all values
ok(
    my $vendorOS1 = $configDB->fetchVendorOSByFilter({ name => 'vos-1' }), 
    'fetch vendor-OS 1 by filter on name'
);
is($vendorOS1->{id},           1,        'vendor-OS 1 - id');
is($vendorOS1->{name},         'vos-1',  'vendor-OS 1 - name');
is($vendorOS1->{comment},      '',       'vendor-OS 1 - comment');
is($vendorOS1->{clone_source}, undef,    'vendor-OS 1 - clone_source');

# fetch vendor-OSes 3 & 1 by id
ok(
    my @vendorOSes3And1
        = $configDB->fetchVendorOSByID([3, 1]), 
    'fetch vendor-OSes 3 & 1 by id'
);
is(@vendorOSes3And1, 2, 'should have got 2 vendor-OSes');
# now sort by ID and check if we have really got 3 and 1
@vendorOSes3And1 = sort { $a->{id} cmp $b->{id} } @vendorOSes3And1;
is($vendorOSes3And1[0]->{id}, 1, 'first id should be 1');
is($vendorOSes3And1[1]->{id}, 3, 'second id should be 3');

# fetching vendor-OSes by id without giving any should yield undef
is(
    $configDB->fetchVendorOSByID(), undef,
    'fetch vendor-OSes by id without giving any'
);

# fetching vendor-OSes by filter without giving any should yield all of them
ok(
    @vendorOSes = $configDB->fetchVendorOSByFilter(),
    'fetch vendor-OSes by filter without giving any'
);
is(@vendorOSes, 3, 'should have got all three vendor-OSes');

# fetch vendor-OSes 2 & 3 by filter on comment
ok(
    my @vendorOSes2And3
        = $configDB->fetchVendorOSByFilter({ comment => 'batch 2' }), 
    'fetch vendor-OSes 2 & 3 by filter on comment'
);
is(@vendorOSes2And3, 2, 'should have got 2 vendor-OSes');
# now sort by ID and check if we have really got 2 and 3
@vendorOSes2And3 = sort { $a->{id} cmp $b->{id} } @vendorOSes2And3;
is($vendorOSes2And3[0]->{id}, 2, 'first id should be 2');
is($vendorOSes2And3[1]->{id}, 3, 'second id should be 3');

# try to fetch with multi-column filter
ok(
    ($vendorOS2, $vendorOS3)
        = $configDB->fetchVendorOSByFilter({ comment => 'batch 2', id => 2 }), 
    'fetching vendor-OS with comment="batch 2" and id=2 should work'
);
is($vendorOS2->{name}, 'vos-2.0', 'should have got vos-2.0');
is($vendorOS3, undef, 'should not get vos-3.0');

# try to fetch multiple occurrences of the same vendor-OS, combined with
# some unknown IDs
ok(
    my @vendorOSes1And3
        = $configDB->fetchVendorOSByID([ 1, 21, 4-1, 1, 0, 1, 1 ]), 
    'fetch a complex set of vendor-OSes by ID'
);
is(@vendorOSes1And3, 2, 'should have got 2 vendor-OSes');
# now sort by ID and check if we have really got 1 and 3
@vendorOSes1And3 = sort { $a->{id} cmp $b->{id} } @vendorOSes1And3;
is($vendorOSes1And3[0]->{id}, 1, 'first id should be 1');
is($vendorOSes1And3[1]->{id}, 3, 'second id should be 3');

# try to fetch a couple of non-existing vendor-OSes by id
is(
    $configDB->fetchVendorOSByID(-1), undef, 
    'vendor-OS with id -1 should not exist'
);
is(
    $configDB->fetchVendorOSByID(0), undef, 
    'vendor-OS with id 0 should not exist'
);
is(
    $configDB->fetchVendorOSByID(1 << 31 + 1000), undef, 
    'trying to fetch another unknown vendor-OS'
);

# try to fetch a couple of non-existing vendor-OSes by filter
is(
    $configDB->fetchVendorOSByFilter({ id => 0 }), undef, 
    'fetching vendor-OS with id=0 by filter should fail'
);
is(
    $configDB->fetchVendorOSByFilter({ name => 'vos-1.x' }), undef, 
    'fetching vendor-OS with name="vos-1.x" should fail'
);
is(
    $configDB->fetchVendorOSByFilter({ comment => 'batch 2', id => 1 }), undef, 
    'fetching vendor-OS with comment="batch 2" and id=1 should fail'
);

# rename vendor-OS 1 and then fetch it by its new name
ok($configDB->changeVendorOS(1, { name => q{VOS-'1'} }), 'changing vendor-OS 1');
ok(
    $vendorOS1 = $configDB->fetchVendorOSByFilter({ name => q{VOS-'1'} }), 
    'fetching renamed vendor-OS 1'
);
is($vendorOS1->{id},   1,          'really got vendor-OS number 1');
is($vendorOS1->{name}, q{VOS-'1'}, q{really got vendor-OS named "VOS-'1'"});

# changing nothing at all should succeed
ok($configDB->changeVendorOS(1), 'changing nothing at all in vendor-OS 1');

# changing a non-existing column should fail
ok(
    ! eval { $configDB->changeVendorOS(1, { xname => "xx" }) }, 
    'changing unknown colum should fail'
);

ok(! $configDB->changeVendorOS(1, { id => 23 }), 'changing id should fail');

# test adding & removing of installed plugins
is(
    my @plugins = $configDB->fetchInstalledPlugins(3), 
    0, 'there should be no installed plugins'
);
ok($configDB->addInstalledPlugin(3, 'Example'), 'adding installed plugin');
is(
    @plugins = $configDB->fetchInstalledPlugins(3), 
    1,
    'should have 1 installed plugin'
);
is(
    $configDB->addInstalledPlugin(3, 'Example'), 1, 
    'adding plugin again should work (but do not harm, just update the attrs)'
);
is(
    @plugins = $configDB->fetchInstalledPlugins(3), 
    1,
    'should still have 1 installed plugin'
);
is($plugins[0]->{plugin_name}, 'Example', 'should have got plugin "Example"');
ok($configDB->addInstalledPlugin(3, 'Test'), 'adding a second plugin');
is(
    @plugins = $configDB->fetchInstalledPlugins(3), 
    2,
    'should have 2 installed plugin'
);
ok(
    !$configDB->removeInstalledPlugin(3, 'xxx'), 
    'removing unknown plugin should fail'
);
ok(
    @plugins = $configDB->fetchInstalledPlugins(3, 'Example'), 
    'fetching specific plugin'
);
is($plugins[0]->{plugin_name}, 'Example', 'should have got plugin "Example"');
ok(
    @plugins = $configDB->fetchInstalledPlugins(3, 'Test'), 
    'fetching another specific plugin'
);
is($plugins[0]->{plugin_name}, 'Test', 'should have got plugin "Test"');
is(
    @plugins = $configDB->fetchInstalledPlugins(3, 'xxx'), 0,
    'fetching unknown specific plugin'
);
ok($configDB->removeInstalledPlugin(3, 'Example'), 'removing installed plugin');
is(
    @plugins = $configDB->fetchInstalledPlugins(3), 
    1,
    'should have 1 installed plugin'
);
ok($configDB->removeInstalledPlugin(3, 'Test'), 'removing second plugin');
is(
    @plugins = $configDB->fetchInstalledPlugins(3), 
    0,
    'should have no installed plugins'
);

# now remove a vendor-OS and check if that worked
ok($configDB->removeVendorOS(3), 'removing vendor-OS 3 should be ok');
is($configDB->fetchVendorOSByID(3, 'id'), undef, 'vendor-OS 3 should be gone');
is($configDB->fetchVendorOSByID(1)->{id}, 1, 'vendor-OS 1 should still exist');
is($configDB->fetchVendorOSByID(2)->{id}, 2, 'vendor-OS 2 should still exist');

$configDB->disconnect();

718d24f4ee2a99'>^
bff431e49ff5 ^
2f39d51981e2 ^
8b58be884a9f ^
795fb7e74dff ^


679655daffdd ^
2f39d51981e2 ^
527a1a83cc1b ^

a3f531ac556d ^
a4edbc101151 ^
527a1a83cc1b ^




a3f531ac556d ^
a4edbc101151 ^
527a1a83cc1b ^




a3f531ac556d ^
a4edbc101151 ^
527a1a83cc1b ^




a3f531ac556d ^
a4edbc101151 ^
527a1a83cc1b ^




a3f531ac556d ^
a4edbc101151 ^
527a1a83cc1b ^


1330b0dcf876 ^



1da177e4c3f4
7c81c60f3789 ^
cc0b07ed479f ^
1da177e4c3f4
679655daffdd ^

1da177e4c3f4
cae2caae7825 ^
fce8ffa35408 ^
cae2caae7825 ^

679655daffdd ^
cae2caae7825 ^
cc0b88cf5ecf ^
cc0b88cf5ecf ^
491b26b40222 ^
e71bcbd0a149 ^
679655daffdd ^
cc0b88cf5ecf ^
e8e31622a17e ^






527a1a83cc1b ^

a3f531ac556d ^
a4edbc101151 ^
527a1a83cc1b ^


45b4e0d54bdb ^
77278d50e04b ^
527a1a83cc1b ^



a3f531ac556d ^
a4edbc101151 ^
527a1a83cc1b ^

77278d50e04b ^
527a1a83cc1b ^


a3f531ac556d ^
a4edbc101151 ^
527a1a83cc1b ^


8c22a8f57516 ^







1da177e4c3f4
8b58be884a9f ^
1da177e4c3f4
679655daffdd ^
1da177e4c3f4
b058b8596136 ^
7c81c60f3789 ^
b058b8596136 ^




527a1a83cc1b ^

a3f531ac556d ^
a4edbc101151 ^
527a1a83cc1b ^


8c6af9e174ab ^
8b58be884a9f ^
8c6af9e174ab ^

679655daffdd ^

8c6af9e174ab ^
1da177e4c3f4
8b58be884a9f ^
1da177e4c3f4
679655daffdd ^
1da177e4c3f4
91952bc0b48a ^



















1da177e4c3f4
6cf515e113fc ^

679655daffdd ^

1da177e4c3f4
e2d1d6c0a5d3 ^
8b58be884a9f ^
e2d1d6c0a5d3 ^

679655daffdd ^


e2d1d6c0a5d3 ^
1da177e4c3f4
8b58be884a9f ^
878eaf61be20 ^
1da177e4c3f4
679655daffdd ^

c117ab842001 ^
1da177e4c3f4

8b58be884a9f ^
1da177e4c3f4

679655daffdd ^

1da177e4c3f4
64624d4f46d5 ^
8b58be884a9f ^
64624d4f46d5 ^
1da177e4c3f4
679655daffdd ^
1da177e4c3f4
450500ad1d58 ^







e2d1d6c0a5d3 ^
8b58be884a9f ^
e2d1d6c0a5d3 ^

679655daffdd ^

e2d1d6c0a5d3 ^
469d4ec87760 ^









1da177e4c3f4
8b58be884a9f ^
6372594ac177 ^
1da177e4c3f4

679655daffdd ^

1da177e4c3f4
272f133afb20 ^
8b58be884a9f ^
08fcb7208c4a ^
679655daffdd ^
272f133afb20 ^
4a4e5787e0b7 ^
8b58be884a9f ^
846557d3ceb6 ^
4a4e5787e0b7 ^
679655daffdd ^

4a4e5787e0b7 ^
1da177e4c3f4
8b58be884a9f ^
8b58be884a9f ^
abd4d609057d ^
c89f4f9a611a ^
a94066992b30 ^
679655daffdd ^
1da177e4c3f4
16b8b9220486 ^
0d9327ab7003 ^
16b8b9220486 ^




adf9251fe9b8 ^


61bd0943bc41 ^
adf9251fe9b8 ^





f4875e12f3dd ^






512d1027a6c5 ^
d034fbf08b6f ^
512d1027a6c5 ^




167a675a8caa ^
8b58be884a9f ^
67d7671036e6 ^
167a675a8caa ^
faf2e1dbd874 ^
167a675a8caa ^
f90b8116032f ^
6900609612d2 ^
67d7671036e6 ^
f90b8116032f ^

679655daffdd ^

8a61f0135c69 ^
679655daffdd ^
f90b8116032f ^
919ee7dd9a66 ^
e41105687b90 ^
919ee7dd9a66 ^
525b233c7188 ^
e41105687b90 ^
b2c1639135c0 ^

919ee7dd9a66 ^
e7f5b309c9bd ^
943482d07e92 ^
7d2c86b5a048 ^
943482d07e92 ^
73d425fd1dda ^
e7f5b309c9bd ^
45198c7b35c0 ^






284f42b627c0 ^
8b58be884a9f ^
284f42b627c0 ^
bd5f47ec9615 ^
284f42b627c0 ^
f94b533d091a ^
8b58be884a9f ^

e6cc0fd1e31c ^
f94b533d091a ^
679655daffdd ^
f94b533d091a ^
531fca1649da ^





c40ddfa34add ^





531fca1649da ^





c40ddfa34add ^





527a1a83cc1b ^
535bd16f4190 ^
4bdef3bd7e59 ^
a3f531ac556d ^
a4edbc101151 ^
4bdef3bd7e59 ^
39c9d199ce67 ^
cc52688a0888 ^
4bdef3bd7e59 ^
ae48f5efb8b3 ^
4bdef3bd7e59 ^
40216ce7aa88 ^
4bdef3bd7e59 ^
527a1a83cc1b ^
b3fe92b03dd6 ^
527a1a83cc1b ^




422690636117 ^
8b58be884a9f ^
a4724ed6f084 ^
93711660086d ^
422690636117 ^
679655daffdd ^
422690636117 ^
1da177e4c3f4
81024fc41a93 ^

679655daffdd ^

c117ab842001 ^
81024fc41a93 ^
1da177e4c3f4
bd7aa4b2dafd ^
8b58be884a9f ^
bd7aa4b2dafd ^

679655daffdd ^
bd7aa4b2dafd ^
6f2fad748ccc ^
d618540fb3e5 ^

6f2fad748ccc ^
679655daffdd ^
6f2fad748ccc ^
1da177e4c3f4
8b58be884a9f ^
1da177e4c3f4
679655daffdd ^

1da177e4c3f4
242995026203 ^







62a37dc7a273 ^





a480167b23ef ^
2d8a3b3d926e ^
a480167b23ef ^




1154ea7dcd8e ^
8b58be884a9f ^
1154ea7dcd8e ^
8a61f0135c69 ^

1154ea7dcd8e ^
1da177e4c3f4
8b58be884a9f ^
1da177e4c3f4
679655daffdd ^

1da177e4c3f4
6f96521fab97 ^




6f96521fab97 ^



d4275354993e ^
8b58be884a9f ^
efc03ecb9d67 ^
d4275354993e ^



d323c243d9e6 ^

56ca9d98772c ^
d323c243d9e6 ^



cefbf4ea6294 ^







8a61f0135c69 ^
cefbf4ea6294 ^






2761f5c2ea80 ^
08a5c9a2bb5d ^

679655daffdd ^
2f748aaad7f4 ^
2761f5c2ea80 ^
1b4304e5ca4e ^




2761f5c2ea80 ^
cefbf4ea6294 ^





2b7a52a459cb ^
8b58be884a9f ^
efc03ecb9d67 ^
2b7a52a459cb ^

9c784f958d01 ^
8b58be884a9f ^
efc03ecb9d67 ^
9c784f958d01 ^

2b7a52a459cb ^
8b58be884a9f ^
efc03ecb9d67 ^
2b7a52a459cb ^

1b106699647b ^



60b0f380beed ^





1b106699647b ^
c1fc8675c9e3 ^
8b58be884a9f ^
c1fc8675c9e3 ^

efc03ecb9d67 ^
795fb7e74dff ^
c1fc8675c9e3 ^


70e389cc7fed ^



d4a89c7d2788 ^
6e05dd4e1ccb ^




986cf2e91968 ^
5d3ad8a63844 ^
986cf2e91968 ^



d94f944e108d ^
9d5e2a023eee ^
d94f944e108d ^



386ab5168bbf ^



b8ba3874b4cf ^
386ab5168bbf ^
2b7a52a459cb ^
ddd559b13f6d ^
1c5454eed85a ^
efc03ecb9d67 ^
2b7a52a459cb ^
d19d36672ee3 ^

2b7a52a459cb ^

8b58be884a9f ^
efc03ecb9d67 ^
2b7a52a459cb ^

d4275354993e ^
8b58be884a9f ^
efc03ecb9d67 ^
37417046b903 ^
d4275354993e ^
4fa2651db463 ^
d4275354993e ^
d48134e709d5 ^
8b58be884a9f ^
efc03ecb9d67 ^
a9da4f7ed6a7 ^

941500954470 ^




1da177e4c3f4
8b58be884a9f ^
1da177e4c3f4

881a95f976e6 ^
162500b3a3ff ^
efc03ecb9d67 ^
162500b3a3ff ^

f49afbb572d5 ^
881a95f976e6 ^
a990cbd88758 ^
5abf58bf4cd0 ^
a990cbd88758 ^
85529d14d58a ^
a990cbd88758 ^

4a9c44f15a73 ^
05f30e8dfa70 ^

f8505ef5c57c ^
a990cbd88758 ^
d4275354993e ^
8b58be884a9f ^
efc03ecb9d67 ^
d4275354993e ^


b955f6ca776f ^
d4275354993e ^
4721f3cec177 ^





a9da4f7ed6a7 ^
8b58be884a9f ^


d66f1886cab1 ^
a9da4f7ed6a7 ^

cafc22658e85 ^

a9da4f7ed6a7 ^
6a915af99fc9 ^
162500b3a3ff ^
efc03ecb9d67 ^
162500b3a3ff ^
1fa7e5473cba ^
f49afbb572d5 ^
6a915af99fc9 ^
d4275354993e ^
8b58be884a9f ^
efc03ecb9d67 ^
d4275354993e ^




86183a5fd0ce ^
f1c12837220c ^
8b58be884a9f ^
efc03ecb9d67 ^
86183a5fd0ce ^
f1c12837220c ^
adf792928d1c ^
ce515a6b8de2 ^
2a82f95c3fb4 ^
e5dafa224f29 ^
86183a5fd0ce ^
2b7a52a459cb ^
8b58be884a9f ^
efc03ecb9d67 ^
2b7a52a459cb ^

90b8fc34968d ^
8b58be884a9f ^
efc03ecb9d67 ^
90b8fc34968d ^

ef47d5f02402 ^
8b58be884a9f ^
12a93f32a3f6 ^

ef47d5f02402 ^


12a93f32a3f6 ^
ef47d5f02402 ^
4dfad0696da3 ^







21f37bc3e51f ^
8b58be884a9f ^
795fb7e74dff ^

084bad91afd0 ^


21f37bc3e51f ^
5e767ab92808 ^





06ff74fd197a ^
5e767ab92808 ^
403d29713e0a ^



ec15408206e6 ^
403d29713e0a ^
2b7a52a459cb ^
8b58be884a9f ^
ab5f8c6ee8af ^
efc03ecb9d67 ^
f00f510ab33f ^
e2bdb176ffae ^

ab5f8c6ee8af ^
efc03ecb9d67 ^
f00f510ab33f ^
2b7a52a459cb ^

8b58be884a9f ^
ab5f8c6ee8af ^
efc03ecb9d67 ^
f00f510ab33f ^
2b7a52a459cb ^

8b58be884a9f ^
ab5f8c6ee8af ^
efc03ecb9d67 ^
f00f510ab33f ^
2b7a52a459cb ^
2b7a52a459cb ^
8b58be884a9f ^
efc03ecb9d67 ^
2b7a52a459cb ^

dfdd8cc90328 ^


baea7b946f00 ^
dfdd8cc90328 ^


838553c5a151 ^
7f49a7f7011f ^





2b7a52a459cb ^
8b58be884a9f ^
ab5f8c6ee8af ^
efc03ecb9d67 ^
f00f510ab33f ^
2b7a52a459cb ^

8b58be884a9f ^
efc03ecb9d67 ^
2b7a52a459cb ^

1154f858ab5c ^




317929cd8ef3 ^
1154f858ab5c ^
bc6aa56680b0 ^
























2b7a52a459cb ^
8b58be884a9f ^
efc03ecb9d67 ^
2b7a52a459cb ^

3b8861715a9c ^
8b58be884a9f ^
3b8861715a9c ^

75f41273ec55 ^



dcb7150368ef ^
75f41273ec55 ^



40f4978be3e7 ^





4cfab57e4707 ^
4f1312b023f3 ^

dcb7150368ef ^
efc03ecb9d67 ^
4f1312b023f3 ^

54a246ff21b5 ^


3b8861715a9c ^
d69ac131384a ^






adcb079f28ec ^


144308139cdc ^
adcb079f28ec ^

d78ff0a50aac ^
8b58be884a9f ^
efc03ecb9d67 ^
d78ff0a50aac ^


9624dfe61658 ^
8b58be884a9f ^
9624dfe61658 ^

e0ee98513d1a ^
28b8e8d4e2e3 ^
e4651a9ff469 ^
28b8e8d4e2e3 ^


ecc265fe9e09 ^
875728807ff0 ^
e4651a9ff469 ^
e0ee98513d1a ^
9d76295ac608 ^
8b58be884a9f ^
9d76295ac608 ^



0c19d21e801b ^

b4c9bfab2ec7 ^
0c19d21e801b ^
c68af41d2dbf ^
0c19d21e801b ^
8a61f0135c69 ^
0c19d21e801b ^

df6212529c64 ^

ea91db527cd7 ^
0a759c6ead84 ^
8cd5c8661df3 ^
0c19d21e801b ^

8459c159f7de ^
8b58be884a9f ^

8459c159f7de ^

5d783a2d592c ^
933d35f00cfa ^
752807871ad2 ^
b5e4ad57eeff ^

933d35f00cfa ^









b5e4ad57eeff ^
b57fe924740b ^
8b58be884a9f ^
752807871ad2 ^
90af5811eb1f ^

b57fe924740b ^

90af5811eb1f ^
c49e1e63a9c7 ^
8b58be884a9f ^
752807871ad2 ^
7d2c86b5a048 ^

933d35f00cfa ^

c49e1e63a9c7 ^
1da177e4c3f4
8b58be884a9f ^
1da177e4c3f4



8b58be884a9f ^
efc03ecb9d67 ^
1da177e4c3f4


8fc1b0f87d9f ^







2b7a52a459cb ^
8b58be884a9f ^
efc03ecb9d67 ^
2b7a52a459cb ^

d4275354993e ^
8b58be884a9f ^
efc03ecb9d67 ^
d4275354993e ^

d4275354993e ^




1a6422f67fbf ^
9e13fbf7af3c ^

d4275354993e ^

08ddbb0a899a ^


00250b529313 ^
08ddbb0a899a ^
541555e95cc9 ^
08ddbb0a899a ^
541555e95cc9 ^

08ddbb0a899a ^
541555e95cc9 ^

08ddbb0a899a ^
b21477f9d257 ^
8b58be884a9f ^
482ce512c543 ^
efc03ecb9d67 ^
7a549d78e7d8 ^
b21477f9d257 ^

6f0589c8fecf ^

482ce512c543 ^
769bbb634f30 ^

eb2ffcaf14d0 ^

40c76662a1ae ^

1da177e4c3f4
0dcecae203cd ^
f556cb078a3a ^




0dcecae203cd ^
33d43cdddbaa ^
f556cb078a3a ^
10ffa96407b2 ^





10ffa96407b2 ^
3ce4ccb630ce ^







e6a476fd5f65 ^


6305902c2f87 ^
e6a476fd5f65 ^


934455d7af23 ^
90d72ac6e1c3 ^
e6a476fd5f65 ^






90d72ac6e1c3 ^
e6a476fd5f65 ^
d48d38e87c2c ^
5e2125985045 ^
d48d38e87c2c ^

d48d38e87c2c ^
bbff48f5e9e1 ^
5e2125985045 ^
d48d38e87c2c ^
0b514fdb5207 ^













d48d38e87c2c ^


66314223aa5e ^









65ebcc115889 ^
a92177eadfb7 ^


65ebcc115889 ^




a92177eadfb7 ^






f53b2bffc4e0 ^
6da969a5fe97 ^
65ebcc115889 ^
2b7a52a459cb ^
8b58be884a9f ^
efc03ecb9d67 ^
2b7a52a459cb ^

1bbd7089f2ef ^
706e69d67652 ^
1bbd7089f2ef ^


2b7a52a459cb ^
8b58be884a9f ^
efc03ecb9d67 ^
2b7a52a459cb ^

98ad6e3b1f5f ^
8b58be884a9f ^
efc03ecb9d67 ^
7d2c86b5a048 ^

4e89e8f61bcd ^
4e89e8f61bcd ^


679ec0ef08af ^
5351684f4354 ^
4e89e8f61bcd ^
9df92e6c770e ^
4e89e8f61bcd ^
8a61f0135c69 ^
98ad6e3b1f5f ^
54274d71d935 ^
e4651a9ff469 ^
54274d71d935 ^


9affbd2458ec ^
54274d71d935 ^



875728807ff0 ^



54274d71d935 ^
875728807ff0 ^
e4651a9ff469 ^
870725d9fcde ^


e4651a9ff469 ^
875728807ff0 ^
e4651a9ff469 ^
875728807ff0 ^

e4651a9ff469 ^

ecc265fe9e09 ^

875728807ff0 ^
e4651a9ff469 ^
875728807ff0 ^
870725d9fcde ^
e93fde28aa56 ^







d4275354993e ^
8b58be884a9f ^
efc03ecb9d67 ^
d4275354993e ^



e66b6d8e86a6 ^




e0cca11ba60f ^
e66b6d8e86a6 ^
04529fe2a298 ^




41fd91b4df9e ^
560746eb79d3 ^
41fd91b4df9e ^



4f31102bbba3 ^
41fd91b4df9e ^
8a61f0135c69 ^


04529fe2a298 ^
e66b6d8e86a6 ^




6ab2a85545c6 ^
e66b6d8e86a6 ^
51f29d444145 ^






bd2a337a25dd ^
c2fd4e380322 ^


df8eb5691c48 ^
e3ec3a3d11ad ^
51f29d444145 ^
b8f9879ea9d9 ^





38074229de47 ^

d19766ec5221 ^
38074229de47 ^


d19766ec5221 ^
38074229de47 ^
9d7005f98754 ^







d58de0387282 ^






b229ece9911c ^
5909c654a6f2 ^
1da177e4c3f4
d094485323a1 ^
76593d6fb0a5 ^
85091b718969 ^
b229ece9911c ^

85091b718969 ^
953a64798d82 ^
ab5f8c6ee8af ^
b3e5f2634ad6 ^
1dd8372d3505 ^
679655daffdd ^




b3e5f2634ad6 ^
a1867d36b3bd ^
14d77c4ddfd8 ^
a1867d36b3bd ^


25f73ed5c67d ^
a1867d36b3bd ^
e7839f25df8e ^
8b58be884a9f ^
eecdf2267216 ^
1da177e4c3f4
679655daffdd ^

1da177e4c3f4
9a10a870e09f ^
f726ee65ae61 ^
9a10a870e09f ^



fa1c114fdaa6 ^
8b58be884a9f ^

f726ee65ae61 ^
fa1c114fdaa6 ^

72c706b77577 ^
fa1c114fdaa6 ^
fa451753b6b7 ^
fa1c114fdaa6 ^
12e62d6f7ec4 ^



58cfb681bffb ^
12e62d6f7ec4 ^


2be7d22f0625 ^







1d7e1e6b1b8e ^






2c2a6172afab ^





6f69a6d776f6 ^
8b58be884a9f ^
6f69a6d776f6 ^
679655daffdd ^
6f69a6d776f6 ^
7ae115b4f50d ^
8b58be884a9f ^
cb2f33e95966 ^
e443e3832428 ^
8d5ca6ec4e5c ^


2b133ad6e9e9 ^
8d5ca6ec4e5c ^
1da177e4c3f4
8b58be884a9f ^
476604de5a9d ^
44ae98b53961 ^
1da177e4c3f4

679655daffdd ^

c117ab842001 ^
1da177e4c3f4
04ac2f46d6ec ^
24e1511f675b ^
04ac2f46d6ec ^



a1cfac48ba4c ^
a02875a67d74 ^
a1cfac48ba4c ^
df6212529c64 ^
a1cfac48ba4c ^
b414dc16f6ee ^





6f0d65afd4c5 ^
b414dc16f6ee ^
888f2804e463 ^





155155451837 ^



f2294c2d66d0 ^
155155451837 ^

8f4c79ce79d1 ^
8b58be884a9f ^
c69f677cc852 ^
8f4c79ce79d1 ^
8a61f0135c69 ^
679655daffdd ^
8f4c79ce79d1 ^
89e5785fc8a6 ^
a02875a67d74 ^
89e5785fc8a6 ^
9f2f381f8138 ^
89e5785fc8a6 ^
754ce4f29937 ^
a02875a67d74 ^
754ce4f29937 ^
9df92e6c770e ^
754ce4f29937 ^
e9cb1c5a5ba9 ^






914a3f3b3754 ^
a02875a67d74 ^

914a3f3b3754 ^
faf2e1dbd874 ^
914a3f3b3754 ^
1da177e4c3f4
8b58be884a9f ^
724c6b35ecff ^
1da177e4c3f4


679655daffdd ^
1da177e4c3f4
26780d9e12ed ^
b75f00507623 ^




26780d9e12ed ^
a92b7b80579f ^
8b58be884a9f ^
b9a0620779d3 ^
ad3f9a2238e4 ^
8c8115faca28 ^
a92b7b80579f ^
679655daffdd ^
c117ab842001 ^
679655daffdd ^
a92b7b80579f ^
70e840499aae ^
8b58be884a9f ^
450c622e9ff1 ^

70e840499aae ^
679655daffdd ^

70e840499aae ^
5f97f7f9400d ^
e336f61fe238 ^

5f97f7f9400d ^
249d9d9d6b7b ^
5f97f7f9400d ^
e336f61fe238 ^
679655daffdd ^
5f97f7f9400d ^

e336f61fe238 ^


679655daffdd ^
5f97f7f9400d ^
1da177e4c3f4
8b58be884a9f ^
1da177e4c3f4
d34cb28a3718 ^
1da177e4c3f4
c117ab842001 ^
679655daffdd ^

1da177e4c3f4
d5269395f5e2 ^
1b2c14b44adc ^
d5269395f5e2 ^





6777376e0d5b ^







e2d1d6c0a5d3 ^
8b58be884a9f ^
e2d1d6c0a5d3 ^
ed072f9e80f0 ^
491b26b40222 ^
e2d1d6c0a5d3 ^
679655daffdd ^
e2d1d6c0a5d3 ^

8b58be884a9f ^

e2d1d6c0a5d3 ^
ed072f9e80f0 ^
491b26b40222 ^
e2d1d6c0a5d3 ^
679655daffdd ^
e2d1d6c0a5d3 ^
300abeb5490d ^
6212de88f8a2 ^
70d14fcf365c ^

300abeb5490d ^
679655daffdd ^

300abeb5490d ^
c6c8fea29769 ^
207df49e75a8 ^
c679ff8fb246 ^
207df49e75a8 ^
c6c8fea29769 ^




e2d1d6c0a5d3 ^
8b58be884a9f ^
e2d1d6c0a5d3 ^


679655daffdd ^
e2d1d6c0a5d3 ^
cafe56359144 ^
47cd2eb0ee05 ^
cafe56359144 ^




3faece9ddcc9 ^






e2d1d6c0a5d3 ^
55817d3d5c48 ^
679655daffdd ^

e2d1d6c0a5d3 ^
564ee3606fe6 ^





e2d1d6c0a5d3 ^
8b58be884a9f ^
e2d1d6c0a5d3 ^
679655daffdd ^

c117ab842001 ^
e2d1d6c0a5d3 ^
1394f0322179 ^
a4edbc101151 ^
b3fe92b03dd6 ^
1443176fd685 ^
e3b2d3f33b3c ^

679655daffdd ^
566da5b2666e ^
e190d6b14007 ^
b3fe92b03dd6 ^
e190d6b14007 ^

7b35f03338a8 ^
e190d6b14007 ^
566da5b2666e ^
b3fe92b03dd6 ^
566da5b2666e ^

679655daffdd ^
1394f0322179 ^
936ed49a540e ^
109ec8c396ea ^
b3fe92b03dd6 ^
936ed49a540e ^



1394f0322179 ^
8b58be884a9f ^
b3fe92b03dd6 ^
e3b2d3f33b3c ^

8460241e4477 ^
1394f0322179 ^
1e6d320f4068 ^
b3fe92b03dd6 ^
1e6d320f4068 ^

679655daffdd ^
1e6d320f4068 ^
d24ecfcc3953 ^
8b58be884a9f ^
b3fe92b03dd6 ^
d24ecfcc3953 ^

679655daffdd ^
d24ecfcc3953 ^
1e2043779d8e ^

b3fe92b03dd6 ^
1e2043779d8e ^





b54cf35a7f65 ^




1da177e4c3f4
8b58be884a9f ^
08deed1ef62d ^
1da177e4c3f4
679655daffdd ^
1da177e4c3f4
2b54aaef7a3a ^
8b58be884a9f ^
2b54aaef7a3a ^

679655daffdd ^
2b54aaef7a3a ^
63fbd24e5102 ^
8b58be884a9f ^
960d4d1ba691 ^
eb491ecac13f ^
781c2844845c ^
63fbd24e5102 ^
22e7a424854b ^

1da177e4c3f4
679655daffdd ^
1da177e4c3f4
63fbd24e5102 ^
8b58be884a9f ^
960d4d1ba691 ^
eb491ecac13f ^
63fbd24e5102 ^

22e7a424854b ^

1da177e4c3f4
679655daffdd ^

1da177e4c3f4

79b30750d99a ^
898602a04950 ^
4cd72c6e72e8 ^
a6c36ee67760 ^
ce00f85c45d7 ^

679655daffdd ^
c117ab842001 ^
1da177e4c3f4
b5f4df3483a1 ^






39105890516b ^
8b58be884a9f ^
39105890516b ^

adfc5217e9db ^
39105890516b ^
32ec90d5d5bb ^





948c51e6a8d7 ^
f1d1baebd1f8 ^

948c51e6a8d7 ^

adfc5217e9db ^

948c51e6a8d7 ^
4d9d2cb026c7 ^
08f6dd89d26f ^
4d9d2cb026c7 ^

adfc5217e9db ^
4d9d2cb026c7 ^
90f4c5944b38 ^
497a045d13dc ^
a3db2bba6d19 ^
497a045d13dc ^
90f4c5944b38 ^
af4b8e371b0f ^


90f4c5944b38 ^
af4b8e371b0f ^

e4ef47f2fe33 ^
af4b8e371b0f ^

f680f25c635a ^




d30fe6272183 ^
f680f25c635a ^



5b293ebe7572 ^







2df94fd66a11 ^







948c51e6a8d7 ^
236294774e24 ^
8b58be884a9f ^
948c51e6a8d7 ^

adfc5217e9db ^
948c51e6a8d7 ^
a9533e7ea3c4 ^

818c07b894df ^
85d63686d892 ^
006a8f148690 ^
a9533e7ea3c4 ^
5615171c935f ^
a9533e7ea3c4 ^
f62ebdd581ea ^
a9533e7ea3c4 ^
9958d6f9a680 ^
3b7f040ac653 ^
9958d6f9a680 ^



6a6b5ad08774 ^
3b7f040ac653 ^
6a6b5ad08774 ^



7b7f588b50d4 ^
5e163903ba59 ^
7b7f588b50d4 ^




c9678d867216 ^






b83022051a81 ^





7725ccfda597 ^
aa8033705eee ^

455518e7b5ff ^


7725ccfda597 ^
8b230ed8ec96 ^

8b230ed8ec96 ^

f844a0ead401 ^
8b230ed8ec96 ^
5cdf7f767849 ^
8b58be884a9f ^
5cdf7f767849 ^

679655daffdd ^

c117ab842001 ^
5cdf7f767849 ^
af39917d5a59 ^







ff1d5c2f0268 ^
eb032b9837a9 ^
ff1d5c2f0268 ^

72dbb7051334 ^
ff1d5c2f0268 ^
eb1eb04fdfbd ^
c0778e2534b8 ^

eb1eb04fdfbd ^

8a6e25357d51 ^
9c106405ddf8 ^
eb1eb04fdfbd ^
679655daffdd ^

eb1eb04fdfbd ^
1da177e4c3f4
1b2c14b44adc ^
661263b55d56 ^
96b6aba08762 ^
275ffde46203 ^
f96236e585e2 ^
679655daffdd ^
90d72ac6e1c3 ^
1da177e4c3f4
1f34923c8a7d ^






af39917d5a59 ^






2141355fcd4d ^







a5432f5ad438 ^
8b58be884a9f ^
a5432f5ad438 ^




c815ca39a0aa ^







77d5140fe78c ^
8b58be884a9f ^
661263b55d56 ^
275ffde46203 ^
77d5140fe78c ^
679655daffdd ^
90d72ac6e1c3 ^
77d5140fe78c ^
201b6bab6798 ^
5c574f501d46 ^
201b6bab6798 ^



c117ab842001 ^
201b6bab6798 ^


77dac90fe4c3 ^
8b58be884a9f ^

77dac90fe4c3 ^

679655daffdd ^



77dac90fe4c3 ^
e2d1d6c0a5d3 ^
8d15d3864a73 ^
1caa60b6d28a ^
ec78213acd6d ^
405cc2736527 ^
e2d1d6c0a5d3 ^
f35f6c8f74a0 ^
8d15d3864a73 ^
8d15d3864a73 ^
c117ab842001 ^



e2d1d6c0a5d3 ^
4261a2043f1b